我试图掌握WebBrowser控件,以便在我正在构建的数据提取应用程序中使用。
这里的要求之一是能够记录用户操作并播放它们。虽然我取得了一些成功,但我不知道我是否会以正确的方式去做这件事。
web上似乎有一些代码示例以非常不同的方式使用控件。更不用说有一个WinForms实现、一个WPF实现和一个Silverlight实现。
有谁能确认:
mshtml的类,而在WinForms中,似乎至少在WinForms中存在相同的任务执行方法?示例
Winforms单击事件处理
void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
foreach (HtmlElement ele in uc_webBrowser.Document.All)
{
HtmlElementEventHandler eventhandler = new HtmlElementEventHandler(documentClickHandler);
if (ele.TagName.ToLower() == "a" || ele.TagName.ToLower() == "input" || ele.TagName.ToLower() == "select" || ele.TagName.ToLower() == "img")
{
ele.Click -= eventhandler;
ele.Click += eventhandler;
}
}
}使用mshtml 类单击事件句柄
void webBrowser1_Navigated(object sender, WebBrowserNavigatedEventArgs e)
{
// Add doc null check otherwise the event handlers are assigned multiple times
// http://stackoverflow.com/questions/5400020/how-come-htmldocumentevent-onclick-fires-up-multiple-times
if (doc == null)
{
var eventHdlr = new mshtml.HTMLDocumentEvents2_onclickEventHandler(ClickEventHandler);
doc = (mshtml.HTMLDocument)webBrowser1.Document.DomDocument;
mshtml.HTMLDocumentEvents2_Event iEvent = (mshtml.HTMLDocumentEvents2_Event)doc;
iEvent.onclick -= eventHdlr;
iEvent.onclick += eventHdlr;
//iEvent.oncellchange += new HTMLDocumentEvents2_oncellchangeEventHandler(iEvent_oncellchange);
//iEvent.oncontrolselect += new HTMLDocumentEvents2_oncontrolselectEventHandler(iEvent_oncontrolselect);
//iEvent.onselectionchange += new HTMLDocumentEvents2_onselectionchangeEventHandler(iEvent_onselectionchange);
}
}发布于 2011-08-03 00:04:13
几年前,我使用WinForms的WebBrowser实现了一个稍微复杂的WYSIWYG编辑器,当时的浏览器是IE7(或者Firefox 1或2,我不记得了)。如果您比在浏览器中加载页面更深入,您将看到MSHTML是一个可以使用的 PIA。
浏览器组件的行为在IE7中并不是100%的确定性(希望这在IE9中已经改变了,但更糟糕的是,您可能需要处理不同版本的Microsoft浏览器)。然而,一个设计良好的面向对象层最重要的是,它将为您的生产力创造奇迹。
我会尽量回答你对使用网页浏览器的疑虑:
根据下面的链接,在WPF的
What functional differences exist between WPF and WinForms WebBrowser control?
但是,如果您想使用一个浏览器,您可能需要尝试不同的浏览器。例如,ASP.NET在MonoDevelop的设计师是在不久前与Mozilla Composer (壁虎引擎)一起开发的,在WebForms变得如此不受欢迎之前,有一个使用WebKit引擎从头开发的项目。
发布于 2011-07-29 19:34:40
我写了一些关于WebBrowser的东西。如果你愿意的话,你可以试试这个:http://www.dotnetfunda.com/articles/article840-working-with-webbrowser-in-wpf-.aspx
谢谢
https://stackoverflow.com/questions/6844766
复制相似问题