문제

웹 브라우저 컨트롤에서 사용자가 선택한 텍스트를 검색하는 방법을 알아 내려고 노력했으며 MSDN 및 기타 리소스를 파헤친 후 운이 없었기 때문에 실제로이를 수행 할 수있는 방법이 있는지 궁금했습니다. 어쩌면 나는 단순히 뭔가를 놓쳤을 것입니다.

이에 관한 도움이나 자료에 감사드립니다.

감사

도움이 되었습니까?

해결책

WebBrowser 컨트롤의 Document.Document 속성을 사용하고 Microsoft.mshtml Interop Assembly에 제공된 IHTMLDocument2 인터페이스에이를 캐스팅해야합니다. 이를 통해 IE에서 실제로 실행되는 JavaScript에서 사용할 수있는 전체 DOM에 액세스 할 수 있습니다.

이렇게하려면 먼저 "C : Program Files Microsoft.net Primary Interop Assemblies Microsoft.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 액세스에 대한 자세한 내용은 다음을 참조하십시오.

다른 팁

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 응용 프로그램이 있다고 가정합니다.

Webbrowser 컨트롤 내에서 JavaScript를 주입/실행할 수 있는지 확인하십시오. JavaScript를 사용하면 선택한 내용을 찾고 반환 할 수 있습니다. 그렇지 않으면 웹 브라우저 컨트롤이 그 내부에서 선택된 내용에 대한 지식이 있는지 의심합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top