Fragensteller
ShellWindows mit GetWebbrowser unter Microsoft Edge ohne Ergebnis

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-CodeSet SW = New ShellWindows
SW.GetWebBrowser
For i = 1 To SW.count
Set IE = SW.Item(i - 1)
sUrl = IE.LocationURL
...
NextDas 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
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 -
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
-
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.aspxund 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 -
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
-
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 -
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