0

嗨,我的程序需要帮助,我在 c# 和 Leap Motion Device 中制作了一个控制台应用程序,我的程序模拟了一个虚拟鼠标,移动光标和左/右键单击,使用

[System.Runtime.InteropServices.DllImport("user32.dll")]

public static void MouseClickLeft(int x, int y) 
        {

            mouse_event(MOUSEEVENTF_LEFTDOWN, x, y, 0, 0);
            mouse_event(MOUSEEVENTF_LEFTUP, x, y, 0, 0);
        }

        public static void MouseClickRight(int x, int y)
        {
            mouse_event(MOUSEEVENTF_RIGHTDOWN, x, y, 0, 0);
            mouse_event(MOUSEEVENTF_RIGHTUP, x, y, 0, 0);
        }

我需要用另一个应用程序运行这个程序,但鼠标控制只有在控制台应用程序作为主窗口运行时才有效,当我在桌面或另一个应用程序中单击鼠标左键时它会停止工作。我是 C# 编程的初学者,我可以做些什么来让它在后台运行并且仍然移动鼠标?

4

2 回答 2

2

要在您的应用程序不是前台应用程序时接收 Leap Motion 跟踪数据,您必须设置后台帧策略:

controller.SetPolicyFlags(Controller.PolicyFlag.POLICYBACKGROUNDFRAMES);

您可以随时调用此函数,但结果是异步的,因此 policyFlags 属性不会立即显示更改。

于 2013-07-12T01:01:42.727 回答
0

看看我的 Key Clone 应用程序是如何完成的: https ://github.com/Mataniko/WowKeyclone/blob/master/Interop.cs

在我的情况下,我使用 WH_KEYBOARD_LL 设置挂钩,在你的情况下使用 WH_MOUSE_LL。

有关设置挂钩的其他信息,请访问:http: //msdn.microsoft.com/en-us/library/windows/desktop/ms644959 (v=vs.85).aspx

如果您需要更多信息,请在评论中告诉我。

于 2013-06-26T05:14:38.040 回答