返回 Windows 版本字符串,如“Microsoft Windows 2000 Service Pack 4 (Build 2195)”。
function tform1.getver():string ; var osvi : TOSVersionInfo; bOsVersionInfoEx : boolean; szBuf : array[0..255] of char; tmp : string; begin lstrcpy(szBuf,'Error!'); ZeroMemory(@osvi,sizeof(TOSVersionInfo)); osvi.dwOSVersionInfoSize := sizeof(TOSVersionInfo); bOsVersionInfoEx := GetVersionEx(osvi); if not bOsVersionInfoEx then begin osvi.dwOSVersionInfoSize := sizeof(OSVERSIONINFO); if(not GetVersionEx(osvi)) then begin result:='Error!'; exit; end; end; case osvi.dwPlatformId of VER_PLATFORM_WIN32_NT: begin if(osvi.dwMajorVersion <= 4) then lstrcpy(szBuf,('Microsoft Windows NT')); if(osvi.dwMajorVersion = 5) and (osvi.dwMinorVersion = 0) then lstrcpy(szBuf,('Microsoft Windows 2000')); if(osvi.dwMajorVersion = 5) and (osvi.dwMinorVersion = 1) then lstrcpy(szBuf,('Microsoft Windows XP')); if(osvi.dwMajorVersion <= 4) then begin tmp:=format(' Version %d.%d %s (Build %d)',[osvi.dwMajorVersion, osvi.dwMinorVersion, osvi.szCSDVersion, osvi.dwBuildNumber and $0FFFF]); lstrcat(szBuf,pchar(tmp)); end else begin tmp:=format(' %s (Build %d)',[osvi.szCSDVersion,osvi.dwBuildNumber and $0FFFF]); lstrcat(szBuf,pchar(tmp)); end; end; VER_PLATFORM_WIN32_WINDOWS: begin if(osvi.dwMajorVersion = 4) and (osvi.dwMinorVersion = 0) then begin lstrcpy(szBuf,('Microsoft Windows 95')); if(osvi.szCSDVersion[ 1 ] = 'C') or (osvi.szCSDVersion[ 1 ] = 'B') then begin lstrcat(szBuf,(' OSR2')); end; end; if(osvi.dwMajorVersion = 4) and (osvi.dwMinorVersion = 10) then begin lstrcpy(szBuf,('Microsoft Windows 98')); if(osvi.szCSDVersion[ 1 ] = 'A') then begin lstrcat(szBuf,(' SE')); end; end; if(osvi.dwMajorVersion = 4) and (osvi.dwMinorVersion = 90) then begin lstrcpy(szBuf,('Microsoft Windows Me')); end; end; VER_PLATFORM_WIN32s: lstrcpy(szBuf,('Microsoft Win32s')); else lstrcpy(szBuf,'Error!'); end; result:=szbuf; end; |