我一直在试图弄清楚如何在我的浏览器控件中检索用户选择的文本,并且在挖掘了 msdn 和其他资源之后没有运气,所以我想知道是否有办法真正做到这一点。也许我只是错过了一些东西。
我感谢任何有关此的帮助或资源。
谢谢
我一直在试图弄清楚如何在我的浏览器控件中检索用户选择的文本,并且在挖掘了 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 的更多信息,请参阅:
以防万一有人对不需要添加对 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 应用程序,其中包含一个打开网站的控件。
检查您是否可以在 Web 浏览器控件中注入/运行 JavaScript。使用 JavaScript,您将能够找出选择的内容并将其返回。否则,我怀疑 Web 浏览器控件是否知道其中选择的内容。