模仿使用编程语言的外围行为

时间:2012-07-18 04:16:33

标签: c# java c++ controls peripherals

  

可能重复:
  Getting mouse position in c#

是否可以在其中一个端口上模仿外围设备,例如鼠标,并编写一个可以向显示屏上的(x,y)发送点击的程序?

1 个答案:

答案 0 :(得分:0)

是的,你可以。几年前我为NUnitForms做了一个MouseController。查看http://nunitforms.sourceforge.net/

鼠标控制器的源代码位于http://nunitforms.svn.sourceforge.net/viewvc/nunitforms/trunk/nunitforms/source/NUnitForms/MouseController.cs?revision=32&view=markup

关键是使用Win32函数SendInput; http://msdn.microsoft.com/en-us/library/windows/desktop/ms646310(v=vs.85).aspx

SendInput函数将union作为输入,C#不容易支持。我所做的是定义两个函数SendMouseInput和SendKeyboardInput,它们指定不同的输入结构,但调用相同的函数。

[DllImport("user32.dll", EntryPoint="SendInput", SetLastError=true)]
internal static extern int SendMouseInput(int cInputs, ref MOUSEINPUT pInputs, int cbSize);

[DllImport("user32.dll", EntryPoint="SendInput", SetLastError=true)]
internal static extern int SendKeyboardInput(int cInputs, ref KEYBDINPUT pInputs, int cbSize);