none
ShellWindows mit GetWebbrowser unter Microsoft Edge ohne Ergebnis RRS feed

  • Frage

  • Hallo,

    in einer VBA-Anwendung wird in einer ersten Funktion eine Webseite mach vorgegebenen Kriterien gesucht und ggf. manuell modinfiziert, d.h. es wird eine Webseite mit Suchparametern aufgerufen.
    In einem zweiten Schritt soll diese Webseite nach bestimmten Daten durchsucht werden. Dieser zweiten Routine ist also die Adresse der Webseite zunächst nicht bekannt.
    Die Routine durchsucht dazu sämtliche geöffneten Webseiten nach speziellen Merkmalen im URL, um so die geeignete Seite zu finden. Hierzu der VBA-Code

       Set SW = New ShellWindows
       SW.GetWebBrowser
       For i = 1 To SW.count
          Set IE = SW.Item(i - 1)
          sUrl = IE.LocationURL
       ...
       Next

    Das hat im Internet Explorer wunderbar funktioniert.
    Leider liefert SW.count unter Microsoft Edge immer 0.

    Hat jemand eine Idee, was man da machen könnte?


    Grüße aus Köln am Rhein - Klaus Trapp

    Dienstag, 6. Oktober 2015 12:55

Alle Antworten

  • Hallo Klaus,

    musst Du die Seite in deiner Anwendung in einem Browsercontrol anzeigen? Falls nicht, warum nimmst Du dann nicht WebClient.DownloadString oder ähnliches zum Laden des Seiteninhalts?

      https://msdn.microsoft.com/de-de/library/fhd1f0sw.aspx

      https://msdn.microsoft.com/de-de/library/system.net.httpwebrequest.aspx


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Mittwoch, 7. Oktober 2015 11:48
  • Hallo Stefan,

    dsa Problem ist nicht, den Seiteninhalt zu laden, sondern die Seite zu identifizieren.

    Ich öffne die Seite einer Datenbank mit bestimmten Suchparametern - und zwar im Standardbrowser,
    also Internet Explorer bzw. Microsoft Edge. Dann muss ich diese Suche meist noch manuell verfeinern, weil meine Ergebnis zu ungenau ist Wenn ich die richtige Seite habe, starte ich den Auslese-Vorgang. Dieser muss daher aus allen geöffneten Seiten diejenigen auswählen, die dafür in Frage kommen, was anhand des URL erkennbar ist. Dass macht die o.a. Schleife, die unter Microsoft Edge nicht mehr funktioniert.


    Grüße aus Köln am Rhein - Klaus Trapp

    Mittwoch, 7. Oktober 2015 16:43
  • Hallo Klaus,

    so wirklich habe ich nicht verstanden, was genau Du da eigentlich machst.

    Willst Du die Seite nur im Standardbrowser öffnen und Du gehst dann manuell selbst im Browser hin und suchst dir die Elemente, die Du brauchst?

    Was genau ist bei dir die Klasse ShellWindows? Ich finde da eigentlich nur das:

      https://msdn.microsoft.com/de-de/library/windows/desktop/bb773974.aspx

    und da gibt es keine Methode GetWebBrowser. Falls es das trotzdem sein sollte, Item liefert ja ein Internet Explorer Objekt. Edge ist aber kein Internet Explorer, genauso wie Firefox und Chrome das nicht sind. Daher wird das auch nicht funktionieren.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Mittwoch, 7. Oktober 2015 18:34
  • Hallo Stefan,

    im Kern geht es darum, aus dem Internet Explorer bzw Microsoft Edge die URLs sämtlicher aktuell geöffneter Seiten zu ermitteln. Alles was danach kommt spielt hier keine Rolle und war nur zur Erläuterung der Anwendung gedacht.

    Mit dem IE funktioniert das sehr gut mit der o.a. Routine. Ich habe diese gerade nochmal getestet.
    Die Methode GetWebbrowser ist wohl nicht erforderlich. Es funktioniert auch ohne.

    Zu ShellWindows siehe https://support.microsoft.com/en-us/kb/176792

    Nun ist ShellWindows nur für den IE geeignet. Ich suche also im Grunde einen Ersatz dafür, der mit Microsoft Edge arbeitet.


    Grüße aus Köln am Rhein - Klaus Trapp

    Mittwoch, 7. Oktober 2015 21:25
  • Hallo Klaus,

    sorry, da kann ich dir leider nicht helfen. Außer GetObject, was in VBA aber anscheinend ja bspw. mit InternetExplorer.Application nicht funktioniert (darum auch die Krücke mit ShellWindows?) fällt mir da nichts ein.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Donnerstag, 8. Oktober 2015 07:40
  • Hallo,

    für alle, die es interessiert, hier ist meine Lösung des Problems:

    Mit Microsoft Edge geht es definitiv nicht - aber
    der 'alte' Internet Explorer ist ja auch unter Windows 10 vorhanden.
    Man muss ihn halt nur aufrufen
    und das erfolgt bevor meine o.a. Routine überhaupt einsetzt.
    In meiner Anwendung unter Access lief das über
      Application.FollowHyperlink strLink
    wobei strLink die URL nebst Parametern enthielt.
    Wenn man stattdessen
      Shell  Chr(34) & "<Pfad zu iexplore>\iexplore.exe" & Chr(34) & " " & strLink
    nimmt, geht es wieder.
    (Chr(34) für die Anführungszeichen, die wegen Leerzeichen im Pfad benötigt.)


    Grüße aus Köln am Rhein
    Klaus Trapp


    • Bearbeitet Klaus Trapp Donnerstag, 12. November 2015 17:41
    • Als Antwort vorgeschlagen Stefan Falz Donnerstag, 12. November 2015 18:31
    Donnerstag, 12. November 2015 17:29