我正在嘗試通過c#執行鼠標單擊。我使用mouse_event函數來完成它。C#單擊屏幕上的某個點
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 \或\ Documents \ Visual Studio 2010 \ Projects \ ProjectName \ ProjectName \ bin \ Debug \ ProjectName.vshost.exe'中檢測到問題。 附加信息:對PInvoke函數「ProjectName!ProjectName.MainForm :: mouse_event」的調用使堆棧不平衡。這很可能是因爲託管的PInvoke簽名與非託管目標籤名不匹配。檢查PInvoke簽名的調用約定和參數是否與目標非託管簽名相匹配。
解決方案的任何想法?
嘗試將其類型更改爲IntPtr並將long更改爲int。 (通過新的IntPtr()作爲extrainfo)。仍然沒有變化 – user779444