0

我为 LeapMotion 设备编写了非接触式鼠标(请参阅代码)问题是鼠标侦听器仅在 winform 位于顶部并具有焦点时才处于活动状态。如果它失去焦点,程序将无法控制光标。我试图在“true”上设置“always ontop”或“topmost”属性。

public Form1()
{
    InitializeComponent();
    this.ShowInTaskbar = false;
    this.Opacity = 0;
    this.TopMost = true;
}

然而,这并没有改变当窗口失去焦点时它停止控制光标的事实。如何实现窗口或程序处于活动状态并在没有焦点的情况下移动光标?

4

2 回答 2

0

默认情况下,Leap Motion 服务停止向非前台应用程序发送帧。这是为了防止在用户与其他应用程序交互时对您的应用程序进行意外输入。

要覆盖这一点,您可以设置策略标志以启用背景框架:

控制器.SetPolicyFlags(Controller.PolicyFlag.POLICYBACKGROUNDFRAMES);

当设置了这个(并且用户没有在他们的 Leap Motion 控制面板中禁用后台应用程序)时,您的应用程序将在后台接收背景帧并且当前前台应用程序未启用 Leap。

于 2013-10-02T20:07:16.037 回答
0

首先,您需要将以下策略标志传递给控制器​​。即使您的应用程序在后台,它也允许控制器接收帧。

var controller = new Controller();
controller.SetPolicyFlags(Controller.PolicyFlag.POLICYBACKGROUNDFRAMES);

请注意,根据 SDK,您只是请求此政策,更改可能不会立即生效。您可以在此处了解更多信息。

最后,需要勾选 Leap Motion 控制面板中的“允许后台应用程序”复选框。

于 2013-10-02T20:02:16.573 回答