如何使用System.Windows.Controls.WebBrowser而不显示它

本文关键字:显示 WebBrowser Controls 何使用 System Windows | 更新日期: 2023-09-27 18:12:14

我需要少看的网页浏览器与一些网页进行交互(例如输入文本,点击一些按钮,然后阅读一些DIV元素)。我如何在WPF中完成它?我尝试使用System.Windows.Controls.WebBrowser,但显然它必须渲染与交互:

var b = new WebBrowser();
b.LoadCompleted += (sender, args) =>
{
    // I never get here...
    Trace.WriteLine(args.Content != null ? "Success" : "Failure");
};
b.Navigate("https://www.google.com");

如何以非视觉方式使用它?还是有更好的选择?

如何使用System.Windows.Controls.WebBrowser而不显示它

WPF WebBrowser需要一个带有Win32窗口句柄的父窗口。相反,您可以使用WinForms WebBrowser版本,它可以在没有父窗口的情况下存在。在项目中只引用System.Windows.Forms.dll程序集。在内部,这两个版本都包装了WebBrowser ActiveX控件。

我张贴了一些如何做到这一点的例子。请注意,它们中的大多数是控制台应用程序,因此它们创建了一个辅助STA线程来运行WebBrowser的消息循环。在WPF中,你可以在主UI线程上使用WinForms WebBrowser

如果您不需要执行任何java脚本,您可以使用WebRequest
(在MSDN页面的底部有一个例子…)