.
Anmeldung | Registrieren | Hilfe
in Suchen

WebBrowser Control

Letzter Beitrag 19. Aug 2011 22:29 von Thorsten Dörfler. 16 Antworten.
Seite 1 von 2 (17 Treffer) 1 2 > Weiter
Beiträge sortieren: Zurück Weiter
  • 25. Mrz 2009 22:58

    • marlem
    • Top 25 Mitwirkender
      Männlich
    • Registriert am 13. Aug 2008
    • Reutlingen
    • Beiträge 172
    • Punkte 2.730

    WebBrowser Control

    hi,

    ich entwickle gerade einen Browser den ich zur Suchmaschinenoptimierung und Prüfen von Barrierefreiheit verwenden möchte!
    ich benutze ich das WebBrowser Control. folgende Fragen habe ich:

    Wie realisiere ich das öffnen in einem neuen Tab, so wie bei Opera z. B. ?

    Wie bekomme ich den title einer html-seite raus um ihn im Fenstertitel anzuzeigen?

    Wie komme ich an den html-code der angezeigten Webseite ran um ihn zu analysieren?


    • IP-Adresse ist Registriert
  • 26. Mrz 2009 8:28 Antwort zu

    • Jan Welker
    • Top 10 Mitwirkender
      Männlich
    • Registriert am 13. Jan 2008
    • 90491
    • Beiträge 1.464
    • Punkte 20.265
    • Moderator

    WebBrowser Control

    Hallo Marlem,

    Tabs bietet das Control nicht. Da musst du improvisieren.
    hier die Antwort auf Frage 2 und 3.

            private void Form1_Load(object sender, EventArgs e)
            {
                // zu einer Seite navigieren
                webBrowser1.Navigate("http://dotnet-forum.de");
    
                // Event registrieren wenn Seite vollständig geladen wurde
                webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted);
            }
    
            void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
            {
                // Title als Fentertext ausgeben
                this.Text = webBrowser1.Document.Title;
    
                // Quelltext ausgeben
                HTMLDocument htmlDocument = (HTMLDocument)webBrowser1.Document.DomDocument;
                richTextBox1.Text = htmlDocument.documentElement.innerHTML;
            }


    Du benötigtst dafür noch ein Verweis auf die Microsoft.mshtml.dll und das entsprechende Using.

    Jan
    • IP-Adresse ist Registriert
  • 26. Mrz 2009 12:45 Antwort zu

    • marlem
    • Top 25 Mitwirkender
      Männlich
    • Registriert am 13. Aug 2008
    • Reutlingen
    • Beiträge 172
    • Punkte 2.730

    WebBrowser Control

    Hallo Jan,

    vielen Dank für Deine Antwort.

    Andere Frage:
    Kennt sich hier im Forum jemand mit SEO(=Suchmaschinenoptimierung) aus?
    Ich möchte in das Programm SEO-Funktionalitäten integrieren!
    z. B. eine Funktion mit der man nachschauen kann, wann google zu letzt auf einer Webseite war!
    geht sowas überhaupt mit C#?
    • IP-Adresse ist Registriert
  • 26. Mrz 2009 14:13 Antwort zu

    • marlem
    • Top 25 Mitwirkender
      Männlich
    • Registriert am 13. Aug 2008
    • Reutlingen
    • Beiträge 172
    • Punkte 2.730

    WebBrowser Control

    hi jan,

    aufgrund der hilfe, habe ich dieses using eingebunden:
    using Microsoft.VisualStudio.TestTools.WebTesting;

    der Compilier kennt aber "VisualStudio" nicht?
    warum?


    VisualStudio kennt er jetzt, aber den Namespace "WebTesting" gibt es wohl nicht!
    konnte auch nichts entdecken, dass noch ein Verweis fehlt!

    • IP-Adresse ist Registriert
  • 26. Mrz 2009 17:24 Antwort zu

    • Jan Welker
    • Top 10 Mitwirkender
      Männlich
    • Registriert am 13. Jan 2008
    • 90491
    • Beiträge 1.464
    • Punkte 20.265
    • Moderator

    WebBrowser Control

    Hallo Marlem,

    bitte stelle die SEO Frage in einem neuen Tread. Pro Thread bitte nur eine Frage.

    Wozu möchtest du

    using Microsoft.VisualStudio.TestTools.WebTesting;

    einbinden?

    Für mein Beispiel benötigst du nur using mshtml; dies wird der Kompiler finden wenn du eine Referenz auf Microsoft.mshtml zu deinem Projekt hinzufügst.

    Jan

    • IP-Adresse ist Registriert
  • 26. Mrz 2009 18:43 Antwort zu

    • marlem
    • Top 25 Mitwirkender
      Männlich
    • Registriert am 13. Aug 2008
    • Reutlingen
    • Beiträge 172
    • Punkte 2.730

    WebBrowser Control

    Hi Jan,

    ich hatte das aus der Doku raus, aber Du hast recht, jetzt geht es Danke!
    • IP-Adresse ist Registriert
  • 05. Jun 2009 20:12 Antwort zu

    • marlem
    • Top 25 Mitwirkender
      Männlich
    • Registriert am 13. Aug 2008
    • Reutlingen
    • Beiträge 172
    • Punkte 2.730

    WebBrowser Control

    hi,

    ich rufe in der webbrowser-komponente google auf. beim aufruf möchte ich nun gleich eine bestimmte suche ausführen.
    geht das, wenn ja wie?

    • IP-Adresse ist Registriert
  • 05. Jun 2009 22:46 Antwort zu

    • gfoidl
    • Top 25 Mitwirkender
      Männlich
    • Registriert am 07. Okt 2008
    • Waidring / Tirol
    • Beiträge 173
    • Punkte 3.105

    WebBrowser Control

    Hi,

    es geht indem du den Querystring an die Adresse anhängst.

    Wenn du zB in Google nach "foidl günther" suchst so wird an den Server die Anfrage:

    http://www.google.at/search?q=g%C3%BCnther+foidl&hl=de&start=10&sa=N

    gesendet. Wird diese Anfrage direkt eingegeben so wird die Suche gestartet.


    Beispiel:
    using System;
    using System.Web;
    using System.Windows.Forms;
    
    namespace WindowsFormsApplication1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
                // Dies ist die Url die Google bei einer Suche 
                // verwendet. Das # darin ist ein Platzhalter:
                string url = "http://www.google.at/search?hl=de&q=#&btnG=Google-Suche&meta=&aq=f&oq=";
    
                // Im queryString ist das # ein Platzhalter und wird
                // durch die gewünschte Sucheingabe ersetzt. Die
                // Sucheingabe muss Url-encoded sein. 
                // Dies geht mit UrlEncode. Dazu einen Verweis auf
                // System.Web einbinden:
                string suchString = "günther foidl";
                suchString = HttpUtility.UrlEncode(suchString);
                url = url.Replace("#", suchString);
    
                // Das Webbrowser-Control auf diese Url navigieren:
                webBrowser1.Navigate(url);
            }
        }
    }


    mfG
    Günther
    Programming today is a race between the programmers and software engineers to create better
    and more idiot-proof programs, and the universe, creating bigger and better idiots. So far,
    the universe is winning". - Rich Cook
    • IP-Adresse ist Registriert
  • 06. Jun 2009 9:56 Antwort zu

    • marlem
    • Top 25 Mitwirkender
      Männlich
    • Registriert am 13. Aug 2008
    • Reutlingen
    • Beiträge 172
    • Punkte 2.730

    WebBrowser Control

    hi,

    ganz schön trickreich! ich hatte erst zweifel ob die url für die google-suche wirklich immer den selben aufbau hat, aber sieht gut aus! werde es mal testen!

    Vielen Dank!

    • IP-Adresse ist Registriert
  • 06. Jun 2009 10:25 Antwort zu

    • marlem
    • Top 25 Mitwirkender
      Männlich
    • Registriert am 13. Aug 2008
    • Reutlingen
    • Beiträge 172
    • Punkte 2.730

    WebBrowser Control

    Hi GÜ,

    hat funktioniert!

     private void tsBVerweisseiten_Click(object sender, EventArgs e)
            {
                String vSuchbefehl;
                String vSuchUrl;
                String vWebUrl;
                vWebUrl = webBrowser1.Url.ToString();
                vSuchUrl = "http://www.google.de/search?hl=de&q=barrierefreies&btnG=Suche&meta=";

                vWebUrl.Trim();
                if (vWebUrl != "")
                {   //SEO-Befehl für Verweisseiten wird zusammengebaut
                    vSuchbefehl = "link:" + vWebUrl;
                    //barrierefreies wird durch SEO-Befehl ersetzt
                    vSuchUrl = vSuchUrl.Replace("barrierefreies", vSuchbefehl);
                    this.webBrowser1.Navigate(vSuchUrl);
                }
            }


    zu was ist "HttpUtility.UrlEncode(suchString);"?
    das kannte er bei mir nicht! deshalb habe ich es weggelassen!

    Vielen Dank!
    • IP-Adresse ist Registriert
  • 06. Jun 2009 12:07 Antwort zu

    • gfoidl
    • Top 25 Mitwirkender
      Männlich
    • Registriert am 07. Okt 2008
    • Waidring / Tirol
    • Beiträge 173
    • Punkte 3.105

    WebBrowser Control

    Hi Markus,

    marlem:
    zu was ist "HttpUtility.UrlEncode(suchString);

    Wenn in der Url "Sonderzeichen" sind können diese nicht an den Server (hier von Google) geschickt werden. "Sonderzeichen" sind zB das "ü" in "günther" oder aber auch Leerzeichen und ähnliches. Um eine korrekte Url an den Server zu senden muss diese kodiert werden, d.h. die Sonderzeichen durch andere Zeichen ersetzt werden. Welches Zeichen wie ersetzt werden muss wurde in einer Spezifikation geregelt.

    Diese Ersetzung der "Sonderzeichen" erledigt die Methode "HttpUtility.UrlEncode". Damit diese verwendet werden kann muss ein Verweis auf System.Web eingebunden werden bzw. bei ASP.net ist dieser schon eingebunden.

    Der Verweis wird wie im angehängten Bild gezeigt eingebunden.


    mfG Günther



    Programming today is a race between the programmers and software engineers to create better
    and more idiot-proof programs, and the universe, creating bigger and better idiots. So far,
    the universe is winning". - Rich Cook
    • IP-Adresse ist Registriert
  • 06. Jun 2009 21:04 Antwort zu

    • marlem
    • Top 25 Mitwirkender
      Männlich
    • Registriert am 13. Aug 2008
    • Reutlingen
    • Beiträge 172
    • Punkte 2.730

    WebBrowser Control

    Hi Günther,

    vielen Dank! funzt. an die verweise habe ich mich noch immer nicht gewöhnt!Sad
    • IP-Adresse ist Registriert
  • 09. Aug 2011 23:54 Antwort zu

    • marlem
    • Top 25 Mitwirkender
      Männlich
    • Registriert am 13. Aug 2008
    • Reutlingen
    • Beiträge 172
    • Punkte 2.730

    WebBrowser Control

    hi günther,

    wollte gerade das hier wieder verwenden:

     private void GoogleSucheStarten(string SuchString)
            {
                // Dies ist die Url die Google bei einer Suche 
                // verwendet. Das # darin ist ein Platzhalter:
        
               // string url = "http://www.google.de/search?hl=de&q=#&btnG=Google-Suche&meta=&aq=f&oq=";

                // Im queryString ist das # ein Platzhalter und wird
                // durch die gewünschte Sucheingabe ersetzt. Die
                // Sucheingabe muss Url-encoded sein. 
                // Dies geht mit UrlEncode. Dazu einen Verweis auf
                // System.Web einbinden:
                string vSuchString = SuchString;
                vSuchString = HttpUtility.UrlEncode(vSuchString);
                url = url.Replace("#", vSuchString);

                // Das Webbrowser-Control auf diese Url navigieren:
                webBrowser1.Navigate(url);

            }



    bekomme ein Scriptfehler. Irgendwie hat sich auch der Google-Suchstring geändert.
    weisst du wie man es trotzdem hinbekommt?


    • IP-Adresse ist Registriert
  • 18. Aug 2011 23:08 Antwort zu

    • marlem
    • Top 25 Mitwirkender
      Männlich
    • Registriert am 13. Aug 2008
    • Reutlingen
    • Beiträge 172
    • Punkte 2.730

    WebBrowser Control

    hallo forum,

    ich suche seit tagen eine zuverlässige methode wie ich überprüfen kann ob in der webbrowser-komponmente eine webseite geladen ist oder ob sie noch leer ist.
    hat jemand eine idee?

    • IP-Adresse ist Registriert
  • 19. Aug 2011 13:38 Antwort zu

    WebBrowser Control

    Hallo marlem,

    es wäre wirklich übersichtlicher, wenn Du für neue Fragestellungen auch ein neues Thema eröffnest, statt ein bestehendes Thema immer wieder zu erweitern. Das hilft Antwortenden, wie auch anderen Nutzern, die vielleicht zum gleichen Problem eine Lösung suchen.

    Zu Deiner Frage: Du kannst über die Document Eigenschaft prüfen, ob bereits eine Seite im WebBrowser Steuerelement geladen ist. Wenn keine geladen ist, gibt diese eine null Referenz zurück:

          if (webBrowser1.Document == null)
          {
            MessageBox.Show("Kein Dokument geladen");
          }
          else
          {
            MessageBox.Show(webBrowser1.DocumentTitle);
          }

    Wie Du feststellen kannst, wann eine Seite geladen wurde, hatte ich Dir ja bereits hier beantwortet.

    Thorsten Dörfler
    Microsoft MVP Visual Basic
    vb-faq.de
    • IP-Adresse ist Registriert
Seite 1 von 2 (17 Treffer) 1 2 > Weiter

WPF Forum | ASP.NET Forum | ASP.NET MVC Forum | Silverlight Forum | Windows Phone 7 Forum | SharePoint Forum | Dotnet Jobs | Dotnet Termine | Developer Blogs | Dotnet News

Das Team | Regeln | Impressum