在我的 WinForm 应用程序中模拟鼠标右键单击
本文关键字:鼠标 右键 单击 模拟 我的 WinForm 应用程序 | 更新日期: 2023-09-27 18:36:34
我试图在我的WinForm
应用程序中模拟鼠标右键单击,如下所示:
public const int WM_RBUTTONDOWN = 0x204;
public const int WM_RBUTTONUP = 0x205;
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = false)]
static extern IntPtr SendMessage(IntPtr hWnd, int Msg, IntPtr wParam, IntPtr lParam);
public static IntPtr MakeLParam(int LoWord, int HiWord)
{
return (IntPtr)((HiWord << 16) | (LoWord & 0xffff));
}
public static void Click(int x, int y)
{
SendMessage(this.Handle, WM_RBUTTONDOWN, IntPtr.Zero, MakeLParam(x,y));
SendMessage(this.Handle, WM_RBUTTONUP, IntPtr.Zero, MakeLParam(x,y));
}
(x,y)
应用程序窗口窗体内的坐标,但没有任何反应,这里缺少什么?
编辑:我也尝试过FindWindow(null,"Form1");
,它给出了与this.Handle
相同的Handle
..
为什么不使用 Windows 窗体中内置的事件?
使用任何控件的 de MouseDown 事件,例如 Form:
private void Form1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == System.Windows.Forms.MouseButtons.Right)
{
}
}
鼠标按下事件在按下的任何鼠标按钮中获取控件。