Получение выделенного текста из элемента управления Webbrowser в .net(С#)
Я пытаюсь выяснить, как получить текст, выбранный пользователем в моем элементе управления webbrowser, и вам не повезло после того, как он пробил через msdn и другие ресурсы. Поэтому мне было интересно, есть ли способ сделать это, Может быть, я просто что-то пропустил.
Я ценю любую помощь или ресурсы в этом отношении.
Спасибо
Ответы
Ответ 1
Вам необходимо использовать свойство Document.DomDocument элемента управления WebBrowser и применить его к интерфейсу IHtmlDocument2, представленному в сборке interp. Microsoft.mshtml. Это дает вам доступ к полной DOM, доступной Javascript, фактически запущенному в IE.
Для этого вам сначала нужно добавить ссылку на свой проект на сборку 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);
}
}
Дополнительные сведения о доступе к полной DOM из приложения .NET см. в разделе
Ответ 2
На всякий случай кто-то заинтересован в решении, которое не требует добавления ссылки на mshtml.dll:
private string GetSelectedText()
{
dynamic document = webBrowser.Document.DomDocument;
dynamic selection = document.selection;
dynamic text = selection.createRange().text;
return (string)text;
}
Ответ 3
И если вы просто используете технику ниже?
//Копировать выделенный текст в буфер обмена
Clipboard.Clear();
SendKeys.SendWait("^(c)");
//Получить выделенный текст из буфера обмена
string strClip = Clipboard.GetText().Trim();
Clipboard.Clear();
Ответ 4
Я предполагаю, что у вас есть приложение WinForms, которое включает элемент управления, который открывает веб-сайт.
Проверьте, можете ли вы вводить/запускать JavaScript внутри вашего элемента управления веб-браузером. Используя JavaScript, вы сможете узнать, что было выбрано и вернуть его. В противном случае я сомневаюсь, что управление веб-браузером имеет какие-либо знания о том, что выбрано внутри него.