// 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;


Zugriffe seit 6.9.2001 auf Delphi-Ecke