给你一段代码,参考吧
用API GetVersion ,不过结果被编码了:
; Type
; ; TGetVer = record
; ; ; WinVer,
; ; ; WinRev,
; ; ; DosRev,
; ; ; DosVer: Byte;
; ; end;
; const
; ; VerStr = '%d.%d';
; procedure TForm1.Button1Click(Sender: TObject);
; var
; ; AllVersions: TGetVer;
; begin
; ; AllVersions := TGetVer(GetVersion);
; ; Edit1.Text := Format(VerStr, [AllVersions.WinVer, AllVersions.WinRev]);
; ; Edit2.Text := Format(VerStr, [AllVersions.DOSVer, AllVersions.DOSRev]);
; end;
注:返回的版本和真实版本未必相同;
Note2: Win32应用程序需要用GetVersionEx
--------------------------------------------------------------------------------
{$IFDEF WIN32}
function GetVersionEx(lpOs : pointer) : BOOL; stdcall;
;external 'kernel32' name 'GetVersionExA';
{$ENDIF}
procedure GetWindowsVersion(var Major : integer;
; ; ; ; ; ; ; ; ; ; ; ; ; ; var Minor : integer);
var
;{$IFDEF WIN32}
; lpOS, lpOS2 : POsVersionInfo;
;{$ELSE}
; l : longint;
;{$ENDIF}
begin
;{$IFDEF WIN32}
; ;GetMem(lpOS, SizeOf(TOsVersionInfo));
; ;lpOs^.dwOSVersionInfoSize := SizeOf(TOsVersionInfo);
; ;while getVersionEx(lpOS) = false do begin
; ; ;GetMem(lpos2, lpos^.dwOSVersionInfoSize + 1);
; ; ;lpOs2^.dwOSVersionInfoSize := lpOs^.dwOSVersionInfoSize + 1;
; ; ;FreeMem(lpOs, lpOs^.dwOSVersionInfoSize);
; ; ;lpOS := lpOs2;
; ;end;
; ;Major := lpOs^.dwMajorVersion;
; ;Minor := lpOs^.dwMinorVersion;
; ;FreeMem(lpOs, lpOs^.dwOSVersionInfoSize);
;{$ELSE}
; l := GetVersion;
; Major := LoByte(LoWord(l));
; Minor := HiByte(LoWord(l));
;{$ENDIF}
end;
procedure TForm1.Button1Click(Sender: TObject);
var
; Major : integer;
; Minor : integer;
begin
; GetWindowsVersion(Major, Minor);
; Memo1.Lines.Add(IntToStr(Major));
; Memo1.Lines.Add(IntToStr(Minor));
end;
--------------------------------------------------------------------------------
; if Win32Platform = VER_PLATFORM_WIN32_WINDOWS then
; ; ShowMessage('win9x');
; if Win32Platform = VER_PLATFORM_WIN32_NT then
; ; ShowMessage('winNT');
--------------------------------------------------------------------------------
procedure TForm1.Button1Click(Sender: TObject);
var
OS : TOSVersionInfo;
begin
OS.dwOSVersionInfoSize := sizeof(OS);
GetVersionEx(OS);
with OS do
; ; case dwPlatformId of
; ; ; ; VER_PLATFORM_WIN32s :
; ; ; ; ; ; ; label1.caption := 'Windows 3.1x/32s';
; ; ; ; VER_PLATFORM_WIN32_WINDOWS :
; ; ; ; ; ; Begin
; ; ; ; ; ; ; ; if (dwMajorVersion = 4) and (dwMinorVersion > 0) then
; ; ; ; ; ; ; ; label1.caption := 'Windows 98'
; ; ; ; ; ; ; else
; ; ; ; ; ; ; ; label1.caption := 'Windows 95';
; ; ; ; ; ; end;
; ; ; ; VER_PLATFORM_WIN32_NT :
; ; ; ; ; ; label1.caption := 'Windows NT' ;
; ; ; end;
; end;
--------------------------------------------------------------------------------
; Const
; cOsUnknown : Integer = -1;
; cOsWin95 : Integer = 0;
; cOsWin98 : Integer = 1;
; cOsWin98SE : Integer = 2;
; cOsWinME : Integer = 3;
; cOsWinNT : Integer = 4;
; cOsWin2000 : Integer = 5;
; cOsWhistler : Integer = 6;
;
; Function GetOSVersion : Integer;
; Function GetOSName( OSCode : Integer ) : String;
;
; Function GetOSVersion : Integer;
; Var
; osVerInfo : TOSVersionInfo;
; majorVer, minorVer : Integer;
; Begin
; Result := cOsUnknown;
; osVerInfo.dwOSVersionInfoSize := SizeOf( TOSVersionInfo );
; If ( GetVersionEx( osVerInfo ) ) Then Begin
; majorVer := osVerInfo.dwMajorVersion;
; minorVer := osVerInfo.dwMinorVersion;
; Case ( osVerInfo.dwPlatformId ) Of
; VER_PLATFORM_WIN32_NT : { Windows NT/2000 }
; Begin
; If ( majorVer <= 4 ) Then
; Result := cOsWinNT
; Else
; If ( ( majorVer = 5 ) And ( minorVer= 0 ) ) Then
; Result := cOsWin2000
; Else
; If ( ( majorVer = 5) And ( minorVer = 1 ) ) Then
; Result := cOsWhistler
; Else
; Result := cOsUnknown;
; End;
; VER_PLATFORM_WIN32_WINDOWS : { Windows 9x/ME }
; Begin
; If ( ( majorVer = 4 ) And ( minorVer = 0 ) ) Then
; Result := cOsWin95
; Else If ( ( majorVer = 4 ) And ( minorVer = 10 ) ) Then Begin
; If ( osVerInfo.szCSDVersion[ 1 ] = 'A' ) Then
; Result := cOsWin98SE
; Else
; Result := cOsWin98;
; End Else If ( ( majorVer = 4) And ( minorVer = 90 ) ) Then
; Result := cOsWinME
; Else
; Result := cOsUnknown;
; End;
; Else
; Result := cOsUnknown;
; End;
; End Else
; Result := cOsUnknown;
; End;
;
; Function GetOSName( OSCode : Integer ) : String;
; Begin
; If ( OSCode = cOsUnknown ) Then
; Result := '(sconosciuto)'
; Else If ( OSCode = cOsWin95 ) Then
; Result := 'Microsoft Windows 95'
; Else If ( OSCode = cOsWin98 ) Then
; Result := 'Microsoft Windows 98'
; Else If ( OSCode = cOsWin98SE ) Then
; Result := 'Microsoft Windows 98 Second Edition'
; Else If ( OSCode = cOsWinME ) Then
; Result := 'Microsoft Windows Millennium Edition'
; Else If ( OSCode = cOsWinNT ) Then
; Result := 'Microsoft Windows New Technology'
; Else If ( OSCode = cOsWin2000 ) Then
; Result := 'Microsoft Windows 2000 / NT 5'
; Else
; Result := 'Microsoft Windows';
; End;
;