我正在使用How to simulate Mouse Click in C#?中的以下代码,我发现它不起作用。这是代码:
[DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
public static extern void mouse_event(uint dwFlags, uint dx, uint dy, uint cButtons, uint 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 void DoMouseClick()
{
mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 882, 554, 0, 0);
}
private void button1_Click(object sender, EventArgs e)
{
DoMouseClick();
}
我也尝试用mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENT_LEFTUP...
替换mouse_event(MOUSEEVENTF_LEFTDOWN & MOUSEEVENT_LEFTUP...
,但仍然没有运气。其他人在这方面取得了成功......我为什么不这样做?
答案 0 :(得分:5)
你不应该使用mouse_event(),它已被SendInput()取代。
有一个很好的理由,mouse_event()的返回类型是 void 。 Windows没有任何方法可以告诉您,您做错了。 SendInput返回UINT并通过返回0并通过GetLastError公开错误代码来报告错误。
你肯定做错了。发送同时上下按钮的鼠标事件没有意义。你需要打两次电话;首先是下一个。