【发布时间】:2011-10-01 12:59:01
【问题描述】:
我正在尝试通过 c# 执行鼠标单击。我使用了 mouse_event 函数。
private const int MOUSEEVENTF_LEFTDOWN = 0x02;
private const int MOUSEEVENTF_LEFTUP = 0x04;
[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);
我尝试了两种方法:
将鼠标移动到该点并单击它:
Cursor.Position = new Point(100, 100);
mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, Cursor.Position.X, Cursor.Position.Y, 0, 0);
将所需点击的 x、y 传递给函数:
mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP,100, 100, 0, 0);
不管怎样,我就是这个奇怪的错误:
托管调试助手“PInvokeStackImbalance”在“C:\Users\or\Documents\Visual Studio 2010\Projects\ProjectName\ProjectName\bin\Debug\ProjectName.vshost.exe”中检测到问题。 附加信息:对 PInvoke 函数 'ProjectName!ProjectName.MainForm::mouse_event' 的调用使堆栈失衡。这可能是因为托管 PInvoke 签名与非托管目标签名不匹配。检查 PInvoke 签名的调用约定和参数是否与目标非托管签名匹配。
关于解决方案的任何想法?
【问题讨论】:
标签: c# click mouseevent