始终显示窗口
本文关键字:窗口 显示 | 更新日期: 2023-09-27 18:33:42
我为LeapMotion设备编写了非接触式鼠标(见代码)问题是,仅当 winform 位于顶部并具有焦点时,鼠标侦听器才会处于活动状态。如果失去焦点,程序无法控制光标。我尝试将"始终在顶部"或"最顶层"属性设置为"true"。
public Form1()
{
InitializeComponent();
this.ShowInTaskbar = false;
this.Opacity = 0;
this.TopMost = true;
}
然而,这并没有改变这样一个事实,即当窗口失去焦点时,它会停止控制光标。如何实现窗口或程序处于活动状态并移动光标,即使它没有焦点?
默认情况下,Leap Motion 服务停止将帧发送到非前台应用程序。这是为了防止在用户与其他应用程序交互时意外输入应用程序。
要覆盖此设置,您可以设置策略标志以启用背景帧:
控制器。SetPolicyFlags(Controller.PolicyFlag.POLICYBACKGROUNDFRAMES);
设置此选项后(并且用户尚未在其 Leap Motion 控制面板中禁用后台应用),当应用处于后台且当前前台应用程序未启用 Leap 时,它将接收背景帧。
首先,您需要将以下策略标志传递给控制器。它允许控制器接收帧,即使应用程序在后台也是如此。
var controller = new Controller();
controller.SetPolicyFlags(Controller.PolicyFlag.POLICYBACKGROUNDFRAMES);
请注意,根据 SDK,您只是请求此策略,更改可能不会立即生效。您可以在此处了解更多信息。
最后,需要勾选Leap Motion控制面板中的"允许后台应用程序"复选框。