[파워빌더] Get Windows OS version
You can't rely on the PB Environment Object because it doesn't return enough details. For on W2K system, the Environment returns NT as the operating system. A better way is to call directly the Win API to query the OS version.[local external function]
FUNCTION ulong GetVersionExA( REF str_osversioninfo lpVersionInfo ) &
LIBRARY "kernel32.dll"
the required structure[str_osversioninfo]
ulong dwOSVersionInfoSize
ulong dwmajorversion
ulong dwminorversion
ulong dwbuildnumber
ulong dwplatformid
CHARACTER SZCSDVERION[128]
the possible valuesdwMajorVersion
Windows 95: 4
Windows 98 4
Windows ME 4
Windows NT 3.51 3
Windows NT 4 4
Windows 2000 5
Windows XP 5
dwMinorVersion
Windows 95 0
Windows 98 10
Windows ME 90
Windows NT 3.51 51
Windows NT 4 0
Windows 2000 0
WINDOWS XP 1
To distinguish between 95 and NT, you also need to check the dwPlatformId valueVER_PLATFORM_WIN32s 0
VER_PLATFORM_WIN32_WINDOWS 1 // WIN95
VER_PLATFORM_WIN32_NT 2 // NT
and from Powerscript, for examplestr_osversioninfo lstr_osver
lstr_osver.dwosversioninfosize = 148
GetVersionExA( lstr_osver )
IF (lstr_osver.dwmajorversion = 5 AND lstr_osver.dwminorversion = 1) THEN
MessageBox("", "Running on XP");
END IF
FUNCTION ulong GetVersionExA( REF str_osversioninfo lpVersionInfo ) &
LIBRARY "kernel32.dll"
the required structure[str_osversioninfo]
ulong dwOSVersionInfoSize
ulong dwmajorversion
ulong dwminorversion
ulong dwbuildnumber
ulong dwplatformid
CHARACTER SZCSDVERION[128]
the possible valuesdwMajorVersion
Windows 95: 4
Windows 98 4
Windows ME 4
Windows NT 3.51 3
Windows NT 4 4
Windows 2000 5
Windows XP 5
dwMinorVersion
Windows 95 0
Windows 98 10
Windows ME 90
Windows NT 3.51 51
Windows NT 4 0
Windows 2000 0
WINDOWS XP 1
To distinguish between 95 and NT, you also need to check the dwPlatformId valueVER_PLATFORM_WIN32s 0
VER_PLATFORM_WIN32_WINDOWS 1 // WIN95
VER_PLATFORM_WIN32_NT 2 // NT
and from Powerscript, for examplestr_osversioninfo lstr_osver
lstr_osver.dwosversioninfosize = 148
GetVersionExA( lstr_osver )
IF (lstr_osver.dwmajorversion = 5 AND lstr_osver.dwminorversion = 1) THEN
MessageBox("", "Running on XP");
END IF