代码之家  ›  专栏  ›  技术社区  ›  user1392416

始终存在窗口

  •  0
  • user1392416  · 技术社区  · 11 年前

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

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

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

    2 回复  |  直到 11 年前
        1
  •  0
  •   Charles Ward    11 年前

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

    要覆盖此项,可以设置策略标志以启用背景帧:

    controller.SetPolicyFlags(controller.PolicyFlag.POLICYBACKGROUNDFRAMES);

    设置此选项后(并且用户尚未在“跳跃运动”控制面板中禁用后台应用程序),当应用程序处于后台且当前前台应用程序未启用“跳跃”时,您的应用程序将接收背景帧。

        2
  •  0
  •   nphx    11 年前

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

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

    请注意,根据SDK,您仅 请求 这一政策和变化可能不会立即发生。你可以了解更多信息 here .

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