在我的 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..

在我的 WinForm 应用程序中模拟鼠标右键单击

为什么不使用 Windows 窗体中内置的事件?
使用任何控件的 de MouseDown 事件,例如 Form:

private void Form1_MouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button == System.Windows.Forms.MouseButtons.Right)
            {
            }
        }
鼠标按下

事件在按下的任何鼠标按钮中获取控件。