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