Frage

Ich habe versucht, herauszufinden, wie Sie den Text durch den Benutzer in meinem Web-Browser-Steuerelement ausgewählt abrufen und haben nach dem Graben durch Msdn und andere Ressourcen kein Glück hatte, also ich frage mich, ob es einen Weg gibt, um tatsächlich das zu tun . Vielleicht etwas, das ich einfach übersehen.

Ich schätze jede Hilfe oder Ressourcen in Bezug auf diesen.

Danke

War es hilfreich?

Lösung

Sie müssen die Document.DomDocument Eigenschaft des WebBrowser-Steuerelement verwenden und diese in der Microsoft.mshtml Interopassembly vorgesehen zum IHTMLDocument2 Schnittstelle umgewandelt. Dies gibt Sie den vollen DOM zugreifen, wie auf Javascript läuft tatsächlich in IE verfügbar ist.

Dieses müssen Sie zuerst tun einen Verweis auf Ihr Projekt in die Microsoft.mshtml Montage normalerweise bei hinzufügen „C: \ Program Files \ Microsoft.NET \ Primary Interop Assemblies \ Microsoft.mshtml.dll“. Es kann mehr als eine sein, stellen Sie sicher, dass Sie die Referenz mit diesem Pfad wählen.

Dann die aktuelle Textauswahl zu erhalten, zum Beispiel:

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);
        }
    }

Für weitere Informationen über den vollständigen DOM aus einer .NET-Anwendung zugreifen, finden Sie unter:

Andere Tipps

Für den Fall, jemand ist in Lösung interessiert, die benötigt keine Referenz Zugabe mshtml.dll:

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

Und wenn Sie nur die Technik unten verwenden?

// Kopieren ausgewählten Text in die Zwischenablage kopieren

        Clipboard.Clear();
        SendKeys.SendWait("^(c)");

// Get ausgewählten Text aus der Zwischenablage

        string strClip = Clipboard.GetText().Trim();
        Clipboard.Clear();

Ich gehe davon aus Sie eine WinForms-Anwendung haben, die eine Steuerung beinhaltet, die eine Website öffnet.

Überprüfen Sie, ob Sie können injizieren / laufen JavaScript in Ihrem Web-Browser-Steuerung. Mit Hilfe von JavaScript, würden Sie in der Lage sein, um herauszufinden, was es wurde ausgewählt und zurück. Ansonsten bezweifle ich die Web-Browser-Steuerung hat keine Kenntnis von dem, was im Innern ausgewählt ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top