【发布时间】:2010-05-31 13:40:09
【问题描述】:
这是我的 ClickMouse() 函数代码:
[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 long MOUSEEVENTF_LEFTDOWN = 0x02;
private const long MOUSEEVENTF_LEFTUP = 0x04;
private const long MOUSEEVENTF_RIGHTDOWN = 0x08;
private const long MOUSEEVENTF_RIGHTUP = 0x10;
private void ClickMouse()
{
long X = Cursor.Position.X;
long Y = Cursor.Position.Y;
mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, X, Y, 0, 0);
}
由于某种原因,当我的程序遇到此代码时,它会抛出以下错误消息:
检测到 PInvokeStackImbalance 消息:调用 PInvoke 函数 'WindowsFormsApplication1!WindowsFormsApplication1.Form1::mouse_event' 使堆栈不平衡。这可能是因为托管的 PInvoke 签名与非托管目标签名不匹配。检查 PInvoke 签名的调用约定和参数匹配 目标非托管签名。
请帮忙?
【问题讨论】:
-
远离 VB6 声明,它们不适用于 .NET 代码。