Windows 下获取当前活动窗口信息

我们在写一些桌面控制相关的功能的时候,往往需要知道用户当前工作程序,这要求我们要先获取用户当前活动窗口的信息。

在 Windows API 里,有两个相似的函数可以来实现上述功能,它们分别是 GetForegroundWindow 和 GetActiveWindow 。

GetForegroundWindow 函数返回前台窗口(用户当前工作的窗口),系统分配给产生前台窗口的线程一个稍高一点的优先级;GetActiveWindow 函数可以获得与调用线程的消息队列相关的活动窗口的窗口句柄。

两者的区别在于:GetActiveWindow 只是获取当前程序(线程)中被激活的窗口;GetForegroundWindow 是获取当前系统中被激活的窗口。两个函数的级别不一样, 一个是线程级、一个是系统级。

Continue Reading…

Skeletal Tracking Beta – Leap Motion UPDATE

Leap Motion官方在前段时间放出了SDK 2.0的Beta,为开发者带来了很多新鲜的东西。其中,追踪模型的改进和骨骼模型跟踪的引入使得识别方式变得完全不同。按官方的意思估计2.0会和1.0共存并一同升级维护。

1.SDK 2.0 Beta中跟踪模型的改进
1.1每只手在任何时候都有5根手指
1.2手指触摸相邻的手指
1.3双手稍微游离到视野之外
1.4手指沿着另一根手指滑动
1.5一根手指触摸另一只手
1.6四根或更少的手指滑过另一只手
1.7手的抓取

Continue Reading…

InteractionBox – Leap Motion API

官方提供的信息
1.Leap Motion的API提供了一个交互箱子类(IneractionBox)。代表了Leap Motion控制器可视区域内的完整的盒型区域。这个InteractionBox类描述Leap Motion视野中的线性物体运动。
2.InteractionBox是一个轴对齐的矩形棱柱,并提供区域内手、手指和工具的标准化坐标。该InteractionBox类可以更容易地将Leap Motion的设备坐标映射在用于2D或3D应用绘图的坐标系。这个类把物体范围中的坐标归一化到[0,1]范围内。你可以归一化一个距离,并且根据应用尺寸,把结果坐标进行缩放,来获取一个在应用中的坐标。

也就是说,这个类的作用在于更方便的将设备坐标转换成应用坐标或屏幕坐标。

具体的转换方法
通俗点讲,就是:
1.先将设备坐标(根据在BOX中的相对位置)转换成[0,1]区间的一个值。
2.将上一步得到的值根据屏幕或窗体的分辨率换算成屏幕坐标。
Continue Reading…