Kapitel 13: Programmschnittstellen
Das aktuelle Betriebssystem ermitteln
Auf den ersten Blick gleichen sich die verschiedenen Windows-Versionen wie ein Ei dem anderen. Aber im
Verborgenen schlummern die Unterschiede, wie viele Programmierer schon leidvoll erfahren mussten. Soll
eine Anwendung unter verschiedenen Betriebssystemen laufen, bleibt in vielen Fällen nichts anderes übrig
als eine systemabhängige Programmierung.
Oberfläche
Kaum der Rede wert ... nur ein einfaches Formular mit zwei Befehlsschaltflächen und einem Textfeld für die
Ausgabe.
Quelltext
Das obligate Einbinden der API-Funktionen:
Private Type OSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128
End Type
Private Const VER_PLATFORM_WIN32s = 0
Private Const VER_PLATFORM_WIN32_WINDOWS = 1
Private Const VER_PLATFORM_WIN32_NT = 2
Private Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" _
(lpVersionInformation As OSVERSIONINFO) As Long
Die Enumeration, über die wir die Versionen unterscheiden können:
Private Enum SystemTyp
sWin95 = 1
sWin98 = 2
sWinNT = 3
sWin2000 = 4
sWinMe = 5
sWinXP = 6
sWinVista = 7
End Enum
Die eigentliche Hilfsfunktion:
Private Function Betriebssystem() As SystemTyp
Dim info As OSVERSIONINFO
info.dwOSVersionInfoSize = Len(info)
GetVersionEx info
If info.dwPlatformId = VER_PLATFORM_WIN32_NT Then
If (info.dwMajorVersion <= 4) Then Betriebssystem = sWinNT
If ((info.dwMajorVersion = 5) And (info.dwMinorVersion = 0)) Then Betriebssystem = sWin2000
If ((info.dwMajorVersion = 5) And (info.dwMinorVersion > 0)) Then Betriebssystem = sWinXP
878
HINWEIS
If ((info.dwMajorVersion = 6) And (info.dwMinorVersion = 0)) Then Betriebssystem = sWinVista
End If
If info.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS Then
If ((info.dwMajorVersion > 4) Or ((info.dwMajorVersion = 4) And (info.dwMinorVersion > 0))) Then
If (info.dwMinorVersion = 90) Then
Betriebssystem = sWinMe
Else
Betriebssystem = sWin98
End If
Else
Betriebssystem = sWin95
End If
End If
End Function
Die Verwendung dieser Funktion ist absolut simpel, wie das folgende Beispiel zeigt:
Private Sub OK_Click()
Meldung.Value = "<b>Aktuelles Betriebssystem:</b>" + Choose(Betriebssystem, "Windows 95", _
"Windows 98", "Windows NT", "Windows 2000", "Windows Me", "Windows XP", _
"Windows Vista")
End Sub
Alternativ könnten Sie auch mittels Case-Anweisung verschiedene Funktionen in Abhängigkeit vom akutellen
Betriebssystem ausführen.
Test
Nach dem Öffnen des Formulars klicken Sie auf die »Start«-Schaltfläche.
Abbildung 13.34 Laufzeitansicht
Bemerkung
In vielenllen genügt bereits die einfache Unterscheidung zwischen Versionen vor und nach Windows
NT. Nutzen Sie dazu die folgende Funktion, die auch mehrfach im Rahmen dieses Buchs verwendet wird:
Function IsSystemNT() As Boolean
Dim info As OSVERSIONINFO
info.dwOSVersionInfoSize = Len(info)
GetVersionEx info
IsSystemNT = (info.dwPlatformId = VER_PLATFORM_WIN32_NT)
End Function
879
Praxisbeispiele

Get Microsoft Office Access 2007-Programmierung - Das Handbuch now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.