如何模拟鼠标按钮并在C#中保持

时间:2017-10-18 09:31:42

标签: c# .net winforms winapi

我希望模拟鼠标左键单击另一个窗口,并按住该按钮约2秒钟。我尝试了以下代码:

        int WM_LBUTTONDOWN = 0x0201;
        int WM_LBUTTONUP = 0x0202;
        SendMessage(hd, WM_LBUTTONDOWN, new IntPtr(1), lParam);           
        Thread.Sleep(2000);
        SendMessage(hd, WM_LBUTTONUP, new IntPtr(1), lParam);

参数" hd"是另一个窗口的句柄和" lParam"包含坐标信息。但它并没有像我期望的那样工作。我使用断点来调试代码。当" WM_LBUTTONDOWN"消息被发送到另一个窗口,立即点击另一个窗口中的按钮,而不是等待消息" WM_LBUTTONUP"。

当我使用真正的鼠标点击并按住按钮时,spy ++显示除了" WM_MOUSEMOVE"之外没有任何其他消息。介于" WM_LBUTTONDOWN"和" WM_LBUTTONUP"。 Picture of Spy++ showed

那么,如何模拟鼠标按钮并在C#中保持?任何建议都会有所帮助,谢谢!

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

“mouse_event”API函数可以解决问题。但副作用是鼠标指针实际会移动,当程序运行时你无法移动鼠标或点击意外错误的位置。