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

时间:2014-07-10 10:58:05

标签: c# wpf webbrowser-control

我需要无外观的网络浏览器与某些网页进行交互(例如输入文字,点击某个按钮,然后阅读一些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");

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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