模拟鼠标事件?C#

模拟鼠标事件?C#,c#,winforms,mouseevent,C#,Winforms,Mouseevent,我正在尝试创建一个windows窗体程序,它可以使计算机像我按下鼠标按钮一样工作。 我想手动控制事件(时间不是预先决定的),并且需要能够按住,所以鼠标按钮的释放应该是一个单独的事件 以下信息不应改变代码,只是帮助您进一步了解我的情况: 其目的是允许用户从Xbox 360控制器(与PC兼容)输入,以控制所连接的计算机 到目前为止,我找到的最好的解决方案是“Windows.Forms.SendKeys”方法,但它只适用于键盘事件 提前感谢!:D我模拟这样的鼠标事件 [DllImport(

我正在尝试创建一个windows窗体程序,它可以使计算机像我按下鼠标按钮一样工作。 我想手动控制事件(时间不是预先决定的),并且需要能够按住,所以鼠标按钮的释放应该是一个单独的事件

以下信息不应改变代码,只是帮助您进一步了解我的情况:

  • 其目的是允许用户从Xbox 360控制器(与PC兼容)输入,以控制所连接的计算机
  • 到目前为止,我找到的最好的解决方案是“Windows.Forms.SendKeys”方法,但它只适用于键盘事件

提前感谢!:D

我模拟这样的鼠标事件

    [DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
    public static extern void mouse_event(uint dwFlags, uint dx, uint dy, uint cButtons, uint dwExtraInfo);
    private const int MOUSEEVENTF_LEFTDOWN = 0x02;
    private const int MOUSEEVENTF_LEFTUP = 0x04;
    private const int MOUSEEVENTF_RIGHTDOWN = 0x08;
    private const int MOUSEEVENTF_RIGHTUP = 0x10;
用法示例:

    public static void leftClick()
    {
        mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
    }

我尝试了鼠标事件方法,但即使按下和释放可以分开,效果也是一样的:同时按下和释放。你可以像这样分开按键和上键:鼠标事件(MOUSEEVENTF_LEFTDOWN,0,0,IntPtr.Zero);如果只想单击按钮,可以使用
PerformClick()
方法。如果您只需要普通的鼠标点击,您可以看到以下线程。