Windows OS Version herausfinden
Verfasst: 13.01.2007 19:52
weil fred den befehl OSVersion() immer noch nicht geupdated hat, habe ich diese prozedur vor paar monaten im englischen forum, auf anfrage eines users gepostet. jetzt stelle ich es einfach mal hier rein und vielleicht kann ja jemand etwas damit anfangen.
Beschreibung: http://msdn.microsoft.com/en-gb/library/ms724451.aspx
C++ Beispiel: http://msdn.microsoft.com/en-gb/library/ms724429.aspx
edit: unterstützung für Windows 7 und Windows Server 2008 R2 hinzugefügt.
c ya,
nco2k

Code: Alles auswählen
#My_OS_Windows_NT3 = 5
#My_OS_Windows_95 = 10
#My_OS_Windows_NT4 = 15
#My_OS_Windows_98 = 20
#My_OS_Windows_ME = 25
#My_OS_Windows_2000 = 30
#My_OS_Windows_XP = 35
#My_OS_Windows_Server_2003 = 40
#My_OS_Windows_Vista = 45
#My_OS_Windows_Server_2008 = 50
#My_OS_Windows_7 = 55
#My_OS_Windows_Future = 100
Procedure MyOSVersionVal()
Protected Result, osvi.OSVERSIONINFO, osviex.OSVERSIONINFOEX
osvi\dwOsVersionInfoSize = SizeOf(OSVERSIONINFO)
If GetVersionEx_(@osvi)
Select osvi\dwPlatformId
Case 1
If osvi\dwMajorVersion = 4
Select osvi\dwMinorVersion
Case 0
Result = #My_OS_Windows_95
Case 10
Result = #My_OS_Windows_98
Case 90
Result = #My_OS_Windows_ME
EndSelect
EndIf
Case 2
osviex\dwOsVersionInfoSize = SizeOf(OSVERSIONINFOEX)
If GetVersionEx_(@osviex)
Select osviex\dwMajorVersion
Case 3
Result = #My_OS_Windows_NT3
Case 4
Result = #My_OS_Windows_NT4
Case 5
Select osviex\dwMinorVersion
Case 0
Result = #My_OS_Windows_2000
Case 1
Result = #My_OS_Windows_XP
Case 2
If osviex\wProductType = 1
Result = #My_OS_Windows_XP; 64Bit
Else
Result = #My_OS_Windows_Server_2003
EndIf
EndSelect
Case 6
Select osviex\dwMinorVersion
Case 0
If osviex\wProductType = 1
Result = #My_OS_Windows_Vista
Else
Result = #My_OS_Windows_Server_2008
EndIf
Case 1
If osviex\wProductType = 1
Result = #My_OS_Windows_7
Else
Result = #My_OS_Windows_Server_2008; R2
EndIf
EndSelect
EndSelect
Else
Result = -1
EndIf
EndSelect
Else
Result = -1
EndIf
Select Result
Case 0
Result = #My_OS_Windows_Future
Case -1
Result = 0; Error
EndSelect
ProcedureReturn Result
EndProcedure
Procedure.s MyOSVersionStr()
Protected Result.s
Select MyOSVersionVal()
Case #My_OS_Windows_NT3
Result = "Windows NT3"
Case #My_OS_Windows_95
Result = "Windows 95"
Case #My_OS_Windows_NT4
Result = "Windows NT4"
Case #My_OS_Windows_98
Result = "Windows 98"
Case #My_OS_Windows_ME
Result = "Windows ME"
Case #My_OS_Windows_2000
Result = "Windows 2000"
Case #My_OS_Windows_XP
Result = "Windows XP"
Case #My_OS_Windows_Server_2003
Result = "Windows Server 2003"
Case #My_OS_Windows_Vista
Result = "Windows Vista"
Case #My_OS_Windows_Server_2008
Result = "Windows Server 2008"
Case #My_OS_Windows_7
Result = "Windows 7"
Case #My_OS_Windows_Future
Result = "Windows Future"
EndSelect
ProcedureReturn Result
EndProcedure
MessageRequester("My OS Version", MyOSVersionStr())
C++ Beispiel: http://msdn.microsoft.com/en-gb/library/ms724429.aspx
edit: unterstützung für Windows 7 und Windows Server 2008 R2 hinzugefügt.
c ya,
nco2k