C# 在不移动光标的情况下执行鼠标单击

C# 在不移动光标的情况下执行鼠标单击,c#,.net,mouseevent,mouse,C#,.net,Mouseevent,Mouse,除了通过cursor类移动光标,用mouse\u event单击鼠标,然后将光标移动到原来的位置之外,我找不到任何解决方案。我现在正在玩SendInput函数,但仍然没有找到好的解决方案的机会。有什么建议吗?您应该使用Win32 API。 使用user32.dll中的pInvoked SendMessage 然后阅读鼠标事件: 然后阅读以下内容: 还有很多信息: 以下是一个遵循霍奇建议的方法的示例 我创建了一个包含2个按钮的表单。当您单击第一个按钮时,第二个按钮的位置被解析(屏幕坐标)。然后

除了通过
cursor
类移动光标,用
mouse\u event
单击鼠标,然后将光标移动到原来的位置之外,我找不到任何解决方案。我现在正在玩
SendInput
函数,但仍然没有找到好的解决方案的机会。有什么建议吗?

您应该使用Win32 API。 使用user32.dll中的pInvoked SendMessage

然后阅读鼠标事件:

然后阅读以下内容:

还有很多信息:
以下是一个遵循霍奇建议的方法的示例

我创建了一个包含2个按钮的表单。当您单击第一个按钮时,第二个按钮的位置被解析(屏幕坐标)。然后检索此按钮的句柄。最后,SendMessage(…)(PInvoke)函数用于在不移动鼠标的情况下发送单击事件

public partial class Form1 : Form
{
    [DllImport("user32.dll")]
    private static extern IntPtr SendMessage(IntPtr hWnd, int Msg, 
        IntPtr wParam, IntPtr lParam);

    [DllImport("user32.dll", EntryPoint = "WindowFromPoint", 
        CharSet = CharSet.Auto, ExactSpelling = true)]
    public static extern IntPtr WindowFromPoint(Point point);

    private const int BM_CLICK = 0x00F5;

    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        // Specify the point you want to click
        var screenPoint = this.PointToScreen(new Point(button2.Left, 
            button2.Top));
        // Get a handle
        var handle = WindowFromPoint(screenPoint);
        // Send the click message
        if (handle != IntPtr.Zero)
        {
            SendMessage( handle, BM_CLICK, IntPtr.Zero, IntPtr.Zero);
        }
    }

    private void button2_Click(object sender, EventArgs e)
    {
        MessageBox.Show("Hi", "There");
    }
}

Net C#,VB?和ASP.Net的风格是什么?我编辑了这些标签。谢谢您的提醒。您要单击什么类型的对象?我正在尝试单击浏览器上的某个位置。首先,我得到要单击的点的坐标,然后运行单击函数。