Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > Способ4


Автор: Poseidon 19.5.2005, 03:31
Этот пример должен работать на всех версиях Windows 
Код
{$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; 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)