RSS
StartseiteKnowledge LibraryTop 10Impressum

Wer da? Internet Explorer Versionsinfo

Ermitteln, ob und welcher Internet Explorer installiert ist

Der Internet Explorer ist mittlerweile auf nahezu jeder Windows Installation zu finden. Aber eben nur nahezu. Wer den Internet Explorer in der eigenen Anwendung nutzt, möchte mitunter wissen, welche Version des Internet Explorers auf dem Rechner installiert ist und ob überhaupt einer installiert ist.

Der Internet Explorer geht langsam, aber sicher, in die sechste Runde und ist mittlerweile auf nahezu jeder Windows Installation zu finden. Aber eben nur nahezu. Wer den Internet Explorer auf Grund dieser breiten Streuung in der eigenen Anwendung nutzt, sei es in Form des WebBrowser-Control oder automatisiert, möchte mitunter wissen, welche Version des Internet Explorers auf dem Rechner installiert ist und ob überhaupt einer installiert wurde.

Internet Explorer

Die hier vorgestellte Funktion sieht den Internet Explorer erst ab Version 3.0 als solchen an. Erst mit Version 3.0 ist der Internet Explorer automatisierbar, so dass diese Einschränkung in den meisten Fällen keine Rolle spielt.

Die Internet Explorer vor Version 5.0 melden sich zudem nicht mit ihrer Produktversionsnummer, sondern mit Ihrer internen Version. Der IE 3.0 meldet sich mit Version 4.70, der IE4 mit Version 4.71 und der IE 4.01 lässt sich durch Version 4.72 erkennen.

Die Versionsinformationen stellen die meisten Dateien des Internet Explorer selber bzw. die von ihm genutzten DLLs, über die exportierte Funktion DllGetVersion. Dies ist keine API Funktion im eigentlichem Sinne, da sie von der jeweiligen Datei selber exportiert wird. Dieser Funktion wird eine DLLVERSIONINFO Struktur übergeben, die nachher die Versionsinformationen bereit hält.

Damit die Anwendung nicht das Zeitliche segnet, wenn kein Internet Explorer auf dem System installiert ist, wird vor dem Aufruf von DllGetVersion die Existenz der "shlwapi.dll" Mithilfe der API Funktion LoadLibrary überprüft. Diese liefert den Modulhandle der DLL, wenn sie erfolgreich geladen wurde. Wenn schon der Modulhandle bekannt ist, lässt sich auch gleich noch die Existenz der DllGetVersion Funktion über die API Funktion GetProcAddress überprüfen. Damit kann auch schon gar nichts mehr schief gehen.

Die Funktion GetIEVersion kapselt diese Aufrufe und liefert über die Parameter Major, Minor und Revision die Version der Internet Explorer Installation. Die Rückgabe der Funktion gibt an, ob überhaupt ein IE zu finden ist (True) oder nicht (False):

Private Type DLLVERSIONINFO
  cbSize          As Long
  dwMajorVersion  As Long
  dwMinorVersion  As Long
  dwBuildNumber   As Long
  dwPlatformID    As Long
End Type

Private Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" _
       (ByVal lpLibFileName As String) As Long
Private Declare Function FreeLibrary Lib "kernel32" _
       (ByVal hLibModule As Long) As Long
Private Declare Function GetProcAddress Lib "kernel32" _
       (ByVal hModule As Long, ByVal lpProcName As String) As Long

Private Declare Function DllGetVersion Lib "shlwapi" _
       (pDVI As DLLVERSIONINFO) As Long

Public Function GetIEVersion(Optional ByRef Major As Long, _
                             Optional ByRef Minor As Long, _
                             Optional ByRef Revision As Long) As Boolean
  Dim hMod As Long
  Dim tDVI As DLLVERSIONINFO
  
  hMod = LoadLibrary("shlwapi")
  
  If (hMod) Then
    If (GetProcAddress(hMod, "DllGetVersion") <> 0) Then
      tDVI.cbSize = Len(tDVI)
  
      DllGetVersion tDVI
  
      With tDVI
        Major = .dwMajorVersion
        Minor = .dwMinorVersion
        Revision = .dwBuildNumber
      End With
      
      GetIEVersion = True
    End If
    FreeLibrary hMod
  End If
End Function