gpt4 book ai didi

c# - 在 webbrowser 控件中模拟鼠标单击

转载 作者:行者123 更新时间:2023-11-30 18:31:09 26 4
gpt4 key购买 nike

我正在构建一个屏幕抓取实用程序来自动填充遗留 Web 表单。在研究了 Selenium 和其他自动化框架之后,我决定简单地使用 C# WebBrower 控件,到目前为止它易于使用并且运行良好。然而,其中一个网络表单使用了一个 java 驱动的导航 Pane ,我无法像使用 html 元素那样控制它。因此,我的计划是找到各种导航元素的屏幕坐标并模拟鼠标点击。

我找到了一些相关的帖子,并被引导尝试这样的事情(下面的代码)。但是,它不起作用,我不明白为什么。我试过在 ClickOn() 调用中将句柄传递给 WebBrowser 控件及其父窗体,但都不起作用。我使用 Spy++ 查看了它,似乎没有消息被触发。有人知道罪魁祸首是什么吗?

此外,我应该补充一点,目前还没有涉及 java。此时我只是尝试单击一个 html 按钮来验证 ClickOn 方法。

public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();

browser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(onDocLoaded);
}

private void onLoad(object sender, EventArgs e)
{
browser.Navigate(@"http://www.dummysite.com/");
}

void onDocLoaded(object sender, WebBrowserDocumentCompletedEventArgs e )
{
ClickOn(browser.Handle, 899, 463);
}

[DllImport("user32.dll", EntryPoint = "PostMessage", CharSet = CharSet.Auto)]
static extern bool PostMessage1(IntPtr hWnd, uint Msg,
int wParam, int lParam);

private void ClickOn(IntPtr hControl, int x, int y)
{
uint WM_LBUTTONDOWN = 0x0201;
uint WM_LBUTTONUP = 0x0202;
PostMessage1(hControl, WM_LBUTTONDOWN, x, y);
PostMessage1(hControl, WM_LBUTTONUP, x, y);
}
}

最佳答案

尝试在 window.load 事件后从 javascript 调用 ClickOn

关于c# - 在 webbrowser 控件中模拟鼠标单击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20637246/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com