回答
https://web.archive.org/web/20140214230712/http://www.pinvoke.net/default.aspx/user32.sendinput
使用Win32 API来发送输入。
更新:
因为我不再与Win32 API的工作,我不会更新这个答案是正确的,当平台的变化或网站变得不可用。由于这个答案甚至不符合Stackoverflow标准(不包含答案本身,而是一个到外部的,现在已经不存在的资源的链接),所以没有必要给它任何点数或花费更多时间。
相反,看看#2,我认为这个问题是一个重复:
我发现不起作用,例如Visual Studio调试器在UINT下面和INPUT []下面放置一行,我发现没有UINT这样的类,尽管我可以将其更改为UInt32。但是,我并没有对INPUT []进行等效更改使其工作 – barlop 2017-05-15 13:08:13
@barlop感谢挖掘这个遗物:),我很抱歉,我不能帮你。我将其标记为已弃用。寻找更好的答案,例如。这里http://stackoverflow.com/questions/2416748/how-to-simulate-mouse-click-in-c – AlexanderMP 2017-05-16 11:46:02
你低估了你的答案的有效性Andrei说过,mouse_event解决方案已经过时,你的SendInput解决方案是更多最新..并在您链接到的问题,最高评价的答案有mouse_event解决方案..所以你的答案可能是最新的比那里的那个。仅仅因为一个好的网站,pinvoke已被劫持或重定向到redgate软件公司,并不意味着网页上的信息已经过时。事实上,目前pinvoke网站的主要页面说明维护。 – barlop 2017-05-16 12:46:38
如果它是正确的按钮,你可以使用
button1.PerformClick();
否则,你可以检查出this MSDN article其论述了模拟鼠标(和键盘)输入。
此外,this project也许能够帮助你。在封面下,它使用SendInput。
对我来说,Java似乎比C#有更好的内置支持,可以在任意位置轻松地在Windows中单击鼠标,但InputSimulator库正是我所需要的。你的答案应该更加突出。 – rob 2016-11-23 21:30:33
要进行鼠标点击:
[DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
public static extern void mouse_event(long dwFlags, long dx, long dy, long cButtons, long dwExtraInfo);
private const int MOUSEEVENTF_LEFTDOWN = 0x02;
private const int MOUSEEVENTF_LEFTUP = 0x04;
private const int MOUSEEVENTF_RIGHTDOWN = 0x08;
private const int MOUSEEVENTF_RIGHTUP = 0x10;
public static void DoMouseClick()
{
mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
}
要移动光标,你想要:
[DllImport("user32.dll")]
static extern bool SetCursorPos(int X, int Y);
public static void MoveCursorToPoint(int x, int y)
{
SetCursorPos(x, y);
}
我看到了这个,试过了,但是mouse_event函数已经过时了。我正在尝试使用SendInput做同样的事情。 – Andrei 2010-04-29 12:41:42
除了像Andrei指出的那样将mouse_event替换为SendInput之外,您还可以通过在第一个参数中设置MOUSEEVENTF_ABSOLUTE掩码并在第二个和第三个参数中传递x和y坐标来传递鼠标位置,而不是先调用SetCursorPos。 – rob 2016-11-23 19:26:24
我会尝试使用这种方法,因为(作为sendinput回答评论),SendInput没有为我工作。使用这种方法,我得到了一个错误'Managed Debugging Assistant'PInvokeStackImbalance'在'C:\ Use ..... \ Debug \ hprog.vshost.exe'中检测到一个问题。 附加信息:对PInvoke函数'prog1!prog1.FrmBlah :: mouse_event'的调用使堆栈不平衡。这很可能是因为托管的PInvoke签名与非托管目标签名不匹配。检查PInvoke签名的调用约定和参数是否与目标非托管签名相匹配 – barlop 2017-05-15 13:11:14
button1_click(null, new EventArgs());
- 1. 如何在JavaFX中以编程方式触发鼠标事件?
- 2. 如何在Windows 8中以编程方式触发鼠标和键盘事件?
- 3. 右键点击:在鼠标所在的地方触发左键点击
- 4. 如何以编程方式触发mx:Button单击事件?
- 5. 鼠标左键单击与JavaScript中的右键单击例程发生冲突
- 6. 发送鼠标左键单击sopcast静音按钮,在c#
- 7. 灯箱触发事件点击空格或鼠标左键单击
- 8. 如何禁用鼠标左键点击?
- 9. PyQT:禁用鼠标左键单击
- 10. 有可能触发context.js上下文菜单鼠标左键单击
- 11. 以编程方式在另一个窗口中单击鼠标
- 12. 以编程方式单击并移动鼠标与VB.NET
- 13. 如何以编程方式触发`valueChanges`?
- 14. 如何以编程方式触发seque?
- 15. 如何以编程方式触发OnTouchListener
- 16. 鼠标左键点击vbs
- 17. 如何以编程方式触发bootstrap的鼠标悬停效果
- 18. 如何以编程的方式触发vb.net中的菜单项单击事件
- 19. 如何区分左键单击,在pygame中单击鼠标右键?
- 20. 如何更改鼠标左键单击和右键单击选项?
- 21. 如何以编程方式单击ApplicationBarIconButton?
- 22. 如何以编程方式单击QPushButton
- 23. 如何以编程方式触发点击事件?
- 24. 如何以编程方式在Android中触发/点击MenuItem?
- 25. 如何以编程方式触发点击链接使用jQuery?
- 26. 如何以编程方式点击状态栏后触发“scrollsToTop”?
- 27. 允许单击鼠标左键单击鼠标右键或按Ctrl键单击打开对话框
- 28. 在发送鼠标左键后,检测鼠标左键按下
- 29. 使用Macbook Pro进行编程,并将鼠标左键单击到键盘
- 30. 如何以编程方式在netcf中发送TAB键击
在哪个平台?的WinForms? WPF? Silverlight的? web表单(= HTML/JavaScript的)?或只是“窗口”(低级别) – 2010-04-29 11:49:38
可能的重复[如何模拟鼠标点击在C#?](http://stackoverflow.com/questions/2416748/how-to-simulate-mouse-click-in-c) – AlexanderMP 2017-05-16 11:46:35