2013-10-02 45 views
0

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

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

但是,这并没有改变这个事实,即当窗口失去焦点时,停止控制光标。我怎样才能实现这个窗口或程序是活动的,即使它没有焦点也能移动光标?

回答

1

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

要覆盖此,您可以设置策略标记,以使背景框:

controller.SetPolicyFlags(Controller.PolicyFlag.POLICYBACKGROUNDFRAMES);

设置此项(并且用户未在其Leap Motion控制面板中禁用后台应用程序),您的应用程序将在后台处于后台并且当前前台应用程序未启用Leap的情况下接收后台帧。

1

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

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

注意的是,根据SDK,你只请求这个政策的变化可能不会立竿见影。您可以详细了解它here

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

相关问题