我一直在试图找出如何检索用户在我的webbrowser控件中选择的文本,并且在通过msdn和其他资源挖掘后没有运气,所以我想知道是否有办法实际执行此操作。也许我只是错过了一些东西。
我感谢您提供任何帮助或资源。
由于
答案 0 :(得分:44)
您需要使用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的更多信息,请参阅:
答案 1 :(得分:2)
以防任何人对解决方案感兴趣,并不需要添加对mshtml.dll的引用:
private string GetSelectedText()
{
dynamic document = webBrowser.Document.DomDocument;
dynamic selection = document.selection;
dynamic text = selection.createRange().text;
return (string)text;
}
答案 2 :(得分:0)
如果您只是使用下面的技术?
//将所选文本复制到剪贴板
Clipboard.Clear();
SendKeys.SendWait("^(c)");
//从剪贴板中获取选定的文字
string strClip = Clipboard.GetText().Trim();
Clipboard.Clear();
答案 3 :(得分:-1)
我假设您有一个WinForms应用程序,其中包含一个打开网站的控件。
检查您是否可以在webbrowser控件中注入/运行JavaScript。使用JavaScript,您将能够找到所选内容并将其返回。否则,我怀疑Web浏览器控件是否知道其中选择的内容。