2013-06-25 73 views
0

您好我需要我的程序帮助,我在c#和Leap Motion Device中创建了控制台应用程序,我的程序模拟虚拟鼠标,移动光标和左/右键,使用C#虚拟鼠标控制台应用程序在后台运行

[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#,有什么我可以做,使其在后台运行,仍然移动鼠标?

回答

0

看看一个例子我的钥匙克隆应用程序如何做到这一点: 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

让我知道在评论,如果您需要了解更多信息。

+0

你基本上可以使用整个班级的编辑 – Mataniko

+0

我看看你的程序,但我不明白,我想让这个控制台应用程序与Game Maker.exe一起工作,就像鼠标的输出一样应用程序变成游戏的输入。 –

+0

您将不得不钩入该窗口句柄并发送输入。这不是一个简单的事情。查看同一项目中的KeyHandler.cs文件,了解如何将这些事件发送到另一个窗口。这里也有很多例子:http://stackoverflow.com/questions/10355286/programmatically-mouse-click-in-another-window – Mataniko

2

要接收大跃进运动跟踪数据,当您的应用程序是不是前台应用程序,你必须设置背景框政策:

controller.SetPolicyFlags(Controller.PolicyFlag.POLICYBACKGROUNDFRAMES); 

你可以调用这个函数在任何时间,但结果是异步的,所以policyFlags属性不会立即显示更改。

相关问题