Подтвердить что ты не робот

Получение выделенного текста из элемента управления Webbrowser в .net(С#)

Я пытаюсь выяснить, как получить текст, выбранный пользователем в моем элементе управления webbrowser, и вам не повезло после того, как он пробил через msdn и другие ресурсы. Поэтому мне было интересно, есть ли способ сделать это, Может быть, я просто что-то пропустил.

Я ценю любую помощь или ресурсы в этом отношении.

Спасибо

4b9b3361

Ответ 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, вы сможете узнать, что было выбрано и вернуть его. В противном случае я сомневаюсь, что управление веб-браузером имеет какие-либо знания о том, что выбрано внутри него.