如何显示操作系统版本?不是os()显示的那种格式。
而是直接显示win98、win2000、winxp……
---------------------------------------------------------------
*以下代码可以取得的操作系统有:Windows31、Windows 9x、Windows NT、Windows 2000、Windows XP、Windows 2003
CLEAR
#DEFINE FFFF 65535
DECLARE INTEGER GetVersionEx IN kernel32 STRING @ lpVersionInformation
lcInfo = CHR(156) + REPLI (CHR(0), 300)
nResult = GetVersionEx (@lcInfo)
vplatform = buf2dword(SUBSTR(lcInfo, 17, 4))
platformname = ""
DO CASE
CASE vplatform = 0
platformname = "Windows 31"
CASE vplatform = 1
platformname = "Windows 9x"
CASE vplatform = 2 AND buf2dword(SUBSTR(lcInfo,5,4))=4
platformname = "Windows NT"
CASE vplatform = 2 AND buf2dword(SUBSTR(lcInfo,5,4))=5 AND buf2dword(SUBSTR(lcInfo,9,4))=0
platformname = "Windows 2000"
CASE vplatform = 2 AND buf2dword(SUBSTR(lcInfo,5,4))=5 AND buf2dword(SUBSTR(lcInfo,9,4))=1
platformname = "Windows XP"
CASE vplatform = 2 AND buf2dword(SUBSTR(lcInfo,5,4))=5 AND buf2dword(SUBSTR(lcInfo,9,4))=2
platformname = "Windows 2003"
OTHERWISE
platformname = "<未知>"
ENDCASE
? "操 作 系 统 : ", platformname
? "Major Version: ", buf2dword(SUBSTR(lcInfo, 5,4))
? "Minor Version: ", buf2dword(SUBSTR(lcInfo, 9,4))
? "Build Number : ", BITAND(buf2dword(SUBSTR(lcInfo, 13,4)), FFFF)
? "platform Num : ", buf2dword(SUBSTR(lcInfo, 17, 4))
? "szCSDVersion : ", "["+STRTRAN(SUBSTR(lcInfo, 21,128), CHR(0),"")+"]"
?
? "Major Service Pack: ", buf2word(SUBSTR(lcInfo, 149,2))
? "Minor Service Pack: ", buf2word(SUBSTR(lcInfo, 151,2))
? "Suite Bit Flags: ", buf2word(SUBSTR(lcInfo, 153,2))
? "Product Type: ", ASC(SUBSTR(lcInfo,155,1))
? "Reserved Byte: ", ASC(SUBSTR(lcInfo,156,1))
FUNCTION buf2dword (lcBuffer)
RETURN;
ASC(SUBSTR(lcBuffer, 1,1)) + ;
ASC(SUBSTR(lcBuffer, 2,1)) * 256 +;
ASC(SUBSTR(lcBuffer, 3,1)) * 65536 +;
ASC(SUBSTR(lcBuffer, 4,1)) * 16777216
ENDFUNC
FUNCTION buf2word (lcBuffer)
RETURN;
ASC(SUBSTR(lcBuffer, 1,1)) + ;
ASC(SUBSTR(lcBuffer, 2,1)) * 256
ENDFUNC