web-dev-qa-db-ja.com

.NET(C#)のWebBrowserコントロールから選択したテキストを取得する

私のWebBrowserコントロールでユーザーが選択したテキストを取得し、MSDNやその他のリソースを掘り下げて運がなかったので、私は実際にこれを行う方法があるかどうか疑問に思っていました。多分私は単に何かを逃した。

これに関する助けやリソースに感謝します。

ありがとう

17
Cliff

WebBrowserコントロールのDocument.domDocumentプロパティを使用し、これをMicrosoft.mshtml相互起動アセンブリに提供されているIHTMLDocument2インターフェイスにキャストする必要があります。これにより、IEで実際に実行されているJavaScriptが使用できるように、フルDOMにアクセスできます。

これを行うには、まず、「C:¥Program Files¥Microsoft.net¥Primosit.mshtml.dll」で正常にMicrosoft.mshtmlアセンブリへのリファレンスを追加する必要があります。複数のものがあるかもしれません、必ずこのパスを参照して参照を選択してください。

次に、現在のテキスト選択を取得するために、次のようになります。

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へのアクセスの詳細については、次のものを参照してください。

44
Ash

誰かがMSHTML.dllへの参照を追加する必要がないソリューションに興味がある場合には:

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