// Es wird die
Windows-Version abgefragt.
// Getestet mit D4 unter WinME
function WinVers: integer;
var vers: _OSVERSIONINFOA;
bnh, bnn: Longword;
begin
result := -1;
vers.dwOSVersionInfoSize := sizeof(_OSVERSIONINFOA);
if GetVersionEx(vers) then begin
case vers.dwPlatformId of
VER_PLATFORM_WIN32s:
result := 0;
VER_PLATFORM_WIN32_WINDOWS:
begin
bnh := (vers.dwBuildNumber shr 24) and 255;
bnn := (vers.dwBuildNumber shr 16) and 255;
if (bnh > 4) or (bnn > 89) then result := 3 else
if bnn > 9 then result := 2 else result := 1;
end;
VER_PLATFORM_WIN32_NT:
if vers.dwMajorVersion < 5 then result := 4
else begin
if vers.dwMinorVersion = 0 then result := 5
else result := 6;
end;
end;
end;
end;
function WindowsVersion: string;
begin
case WinVers of
0: result := 'Win32s';
1: result := 'Windows 95';
2: result := 'Windows 98';
3: result := 'Windows ME';
4: result := 'Windows NT';
5: result := 'Windows 2000';
6: result := 'Windows XP';
else result := 'Version nicht erkannt';
end;
end;
// -- Beispielaufrufe --
procedure TForm1.Button2Click(Sender: TObject);
begin
showmessage(WindowsVersion);
end;
procedure TForm1.FormCreate(Sender: TObject);
var i: integer;
begin
i := WinVers;
if (i > 3) or (i < 1) then begin
showmessage('Das Programm läuft nicht unter dieser Version');
application.terminate;
end;
end;
//------------------------------------------------------------------------
// Wenn man nur
wissen will, ob es sich um NT oder höher handelt dann einfach:
function IsWindowsNT: Boolean;
begin
Result := Win32Platform = VER_PLATFORM_WIN32_NT;
end;
// Beispielaufruf
procedure TForm1.Button1Click(Sender: TObject);
begin
if not IsWindowsNT then halt;
end;
|