Share via


Laufende Instanzen des Internet Explorers ermitteln

Veröffentlicht: 27. Sep 2000 | Aktualisiert: 17. Jun 2004

Von Mathias Schiffer

Das Starten einer Instanz des Internet Explorers ist dank seines Objektmodells eine leichte Aufgabe:

Dim IE As Object 
  Set IE = CreateObject("InternetExplorer.Application") 
  IE.Navigate2 "about:<H1>Erzeugt und gesteuert aus Visual Basic.</H1>" 
  IE.Visible = True

Versuchen Sie jedoch, mittels der Funktion GetObject eine Referenz auf eine bereits laufende Instanz des Internet Explorers zu erhalten, schlägt dieses Ansinnen fehl: Aus Scripting-Sicherheitsgründen trägt der Internet Explorer seine Instanzen nicht in die Liste verfügbarer Objekte (ROT = "Running Object Table") ein, von der GetObject eine Referenz beziehen könnte.

Um in Ihren Anwendungen dennoch Zugriff auf laufende Instanzen des Internet Explorers zu erhalten, können Sie ab der Version 4.0 des Browsers über die Collection "ShellWindows" der Komponente "Microsoft Internet Controls" (shdocvw.dll) über alle Instanzen von Fenstern der Shell iterieren, zu denen sich auch der Internet Explorer zählt.

Um den Internet Explorer in dieser Sammlung von anderen Elementen unterscheiden zu können, können Sie auf dessen Document-Eigenschaft zurückgreifen: Ist das hierin enthaltene Objekt vom Typ "HTMLDocument", handelt es sich um den Internet Explorer. Die Klasse "HTMLDocument" ist Teil der "Microsoft HTML Object Library", die Sie daher zusätzlich referenzieren müssen: Für den Internet Explorer in Version 4 referenzieren Sie hierfür die Datei mshtml.dll, bei installiertem Internet Explorer 5 finden Sie diese Objektbibliothek in der Datei mshtml.tlb vor (alternativ können Sie diese zusätzliche Referenz auslassen und mit der TypeName-Funktion den Typ des Dokuments auf den String "HTMLDocument&#147 prüfen):

Dim objShellWindows As New SHDocVw.ShellWindows 
Dim objShellWindow As Object 
  ' Fehler beim Zugriff auf die Document-Eigenschaft ignorieren 
  On Error Resume Next 
  ' Iterieren über alle Shell-Windows 
  For Each objShellWindow In objShellWindows 
    ' Ist das Document vom Typ HTMLDocument, 
    ' handelt es sich um ein IE-Fenster: 
    If TypeOf objShellWindow.Document Is HTMLDocument Then 
      ' Titel der angezeigten Seite anzeigen 
      MsgBox objShellWindow.Document.Title, vbInformation 
    End If 
  Next objShellWindow

Beispielprojekt, weiterführende Literatur:

Weitere Informationen zu diesem Thema finden Sie in Ihrer MSDN Library oder im MSDN Online: