从.net(C#)中的Webbrowser控件中检索所选文本

我一直在试图弄清楚如何在我的webbrowser控件中检索用户选择的文本,并且在挖掘msdn和其他资源后没有运气,所以我想知道是否有办法实际执行此操作。 也许我只是错过了什么。

我感谢任何关于此的帮助或资源。

谢谢

您需要使用WebBrowser控件的Document.DomDocument属性并将其强制转换为Microsoft.mshtml互操作程序集中提供的IHtmlDocument2接口。 这使您可以访问实际运行在IE中的Javascript的完整DOM。

为此,首先需要将项目引用添加到Microsoft.mshtml程序集中,通常位于“C:\ Program Files \ Microsoft.NET \ Primary Interop Assemblies \ Microsoft.mshtml.dll”。 可能有多个,请确保选择此路径的引用。

然后获取当前文本选择,例如:

using mshtml; ... IHTMLDocument2 htmlDocument = webBrowser1.Document.DomDocument as IHTMLDocument2; IHTMLSelectionObject currentSelection= htmlDocument.selection; if (currentSelection!=null) { IHTMLTxtRange range= currentSelection.createRange() as IHTMLTxtRange; if (range != null) { MessageBox.Show(range.text); } } 

有关从.NET应用程序访问完整DOM的更多信息,请参阅:

  • 演练:从C#访问DHTML DOM

  • IHTMLDocument2接口参考

万一有人对解决方案感兴趣,不需要添加对mshtml.dll的引用:

 private string GetSelectedText() { dynamic document = webBrowser.Document.DomDocument; dynamic selection = document.selection; dynamic text = selection.createRange().text; return (string)text; } 

如果你只是使用下面的技术?

//将所选文本复制到剪贴板

  Clipboard.Clear(); SendKeys.SendWait("^(c)"); 

//从剪贴板中获取所选文本

  string strClip = Clipboard.GetText().Trim(); Clipboard.Clear(); 

我假设您有一个WinForms应用程序,其中包含一个打开网站的控件。

检查是否可以在webbrowser控件中注入/运行JavaScript。 使用JavaScript,您将能够找到所选内容并将其返回。 否则,我怀疑Web浏览器控件是否知道其中选择了什么。