模拟鼠标在没有移动光标的浏览器中单击

时间:2015-11-11 22:01:58

标签: c#

我创建了一个Windows窗体,并在表单中添加了两个按钮和一个浏览器。我使用程序获取鼠标坐标并单击登录按钮。我想在不移动光标的情况下实现它。 我不希望找到登录按钮ID或使用HTML请求/响应。

任何想法是否可以在不移动光标的情况下在浏览器中单击非html按钮。

以下代码适用但仅适用于表单中的其他控件,但不适用于表单中的浏览器

using System;
using System.Drawing;
using System.Runtime.InteropServices;
using System.Windows.Forms;

namespace simulateclicktest
{
    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 = new Point(157
                ,455);
            // 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("clicked");
        }

    }
}

1 个答案:

答案 0 :(得分:1)

尝试查找按钮ID并使用以下代码:

private void button1_Click(object sender, EventArgs e)
{
    webBrowser1.Document.GetElementById("button_ID").InvokeMember("click");
}

如果您在表单上有webBrowser控件并且知道按钮的ID,则不需要DllImport。