gpt4 book ai didi

c# - 抓取时防止警告消息

转载 作者:太空狗 更新时间:2023-10-30 01:06:00 25 4
gpt4 key购买 nike

根据要求,我需要抓取网页中的内容。为了实现这一点,我创建了一个 Windows 应用程序并向主窗体添加了一个 Web 浏览器控件。这样我就可以查看抓取过程。我能够登录到网页并导航到所需的网页。我也能够以编程方式双击网格单元格。但当前的问题是以编程方式双击网格单元时,如果所需数据不可用,我会收到一条警告消息 enter image description here

所以抓取过程自然会中断,我们需要手动单击“确定”按钮继续抓取过程。如何在抓取时避免警报消息的到来?

最佳答案

要以编程方式单击警告框,我们可以使用 Windows API FindWindow、FindWindowEx 和 SendMessage,其思路是当警告框出现时,宿主 WebBrowser 控件的窗体将失去焦点,此时,我们将能够使用FindWindow 来检索警告框的窗口句柄,最后我们可以向“确定”按钮发送单击消息以单击它。

    [DllImport("user32.dll", SetLastError = true)]
static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow);
[DllImport("user32.dll", EntryPoint = "FindWindow", SetLastError = true)]
private static extern IntPtr FindWindow(string lpClassName, string lpWindowName);

[DllImport("user32.dll", CharSet = CharSet.Auto)]
static extern IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, IntPtr wParam, IntPtr lParam);

private void Form1_Deactivate(object sender, EventArgs e)
{
IntPtr hwnd = FindWindow(null, "Message from webpage");
hwnd = FindWindowEx(hwnd, IntPtr.Zero, "Button", "OK");
uint message = 0xf5;
SendMessage(hwnd, message, IntPtr.Zero, IntPtr.Zero);
}

关于c# - 抓取时防止警告消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16828221/

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