C# WebBrowser Control.NET-什么';与此控件交互的预期方式是什么?
我正在尝试掌握C# WebBrowser Control.NET-什么';与此控件交互的预期方式是什么?,c#,.net,winforms,webbrowser-control,C#,.net,Winforms,Webbrowser Control,我正在尝试掌握WebBrowser控件,以便在我正在构建的数据提取应用程序中使用 这里的要求之一是能够记录用户操作并回放它们。虽然我取得了一点成功,但我对我是否以正确的方式进行这件事感到困惑 web上似乎有一些代码示例以非常不同的方式使用控件。更不用说有WinForms实现、WPF实现和Silverlight实现 有人能证实: 到目前为止,我的发现是否正确,该控件的WPF版本没有与WinForms版本相同的功能,并且在响应某些事件方面有一定的限制 为什么有人在使用控件时选择使用基于mshtml的
WebBrowser
控件,以便在我正在构建的数据提取应用程序中使用
这里的要求之一是能够记录用户操作并回放它们。虽然我取得了一点成功,但我对我是否以正确的方式进行这件事感到困惑
web上似乎有一些代码示例以非常不同的方式使用控件。更不用说有WinForms实现、WPF实现和Silverlight实现
有人能证实:
mshtml
的类,而至少在WinForms中,Windows窗体类中似乎存在执行相同任务的等效方法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);
}
}
我很久以前就写过一些关于韦伯的东西。如果需要,您可以尝试以下方法:
谢谢几年前,我用WinForms的WebBrowser实现了一个有点复杂的WYSIWYG编辑器,当时的浏览器是IE7(我不记得有IE7或Firefox1或2)。如果您只在浏览器中加载页面,您将看到MSHTMLPIA是一个需要处理的难题 IE 7中浏览器组件的行为不是100%确定的(希望IE 9中的情况有所改变,但更糟糕的是,您可能需要处理不同版本的Microsoft浏览器)。然而,设计良好的OO层将为您的生产力创造奇迹 我将尝试回答您关于使用web浏览器的疑问:
但是,如果您想使用一个浏览器,您可能希望尝试使用不同的浏览器。例如,MonoDevelop的ASP.NET设计器是在不久前用Mozilla Composer(Gecko engine)开发的,在WebForms变得如此不受欢迎之前,有一个项目使用WebKit引擎从头开始开发它。FWIW,围绕MSHTML的.NET包装并没有公开所有功能。有时候你需要花更少的钱来完成一些事情。有没有一个很好的教程介绍如何使用这个更深层的功能?谢谢,你的帖子证实了我到目前为止的很多经验。这一项目暂时搁置,但很快可能会重新启动。我很想了解更多关于基于javascript的宏的知识。认为前进的道路可能只是学习C++和使用一个流行的开源浏览器!我对此一无所知,但您可以告诉我,您可能希望记录哪些在标准DOM事件中未捕获的用户操作?而且你总是可以选择使用.NET的其他浏览器,不需要C++。