AsuYuHomepage
トップページ サイトの説明 子供の成長記録 JM BAR Delphi リンク集
Home>>プログラミング>>Tips&Tricks>>WindowsのOSのバージョンを取得する
Delphi Tips
Delphi Win32API
ダウンロード

Counter

Delphi Tips & Tricks

WindowsのOSのバージョンを取得する

 Windowsのバージョンを取得するサンプルです。
もっと細分化してエディションの違いなどを、判別するにはOSVERSIONINFOEXレコードを定義して使いますが、OSの違いだけならこれだけでいけます。
procedure TForm1.Button1Click(Sender: TObject);
var
  osInfo: OSVERSIONINFO;
  ver :string;
begin
   osInfo.dwOSVersionInfoSize:=sizeof(OSVERSIONINFO);
   if GetVersionEx(osInfo) then begin
    with osinfo do begin
     case dwPlatformId of
     VER_PLATFORM_WIN32_NT: //Windows NT/2000/XP
     begin
      if dwMajorVersion <=4 then
        ver := 'WinNT'
      else if (dwMajorVersion =5) and (dwMinorVersion =0) then
        ver := 'Win2000'
      else if (dwMajorVersion =5) and (dwMinorVersion =1) then
          ver := 'WinXP'
      else
        ver := 'Unknown';
        end;
     VER_PLATFORM_WIN32_WINDOWS:  //Windows 9x/ME
        begin
          if (dwMajorVersion =4) and (dwMinorVersion =0) then
            ver := 'Win95'
          else if (dwMajorVersion =4) and (dwMinorVersion =10) then
          begin
            if szCSDVersion[1] = 'A' then
              ver := 'Win98SE'
            else
              ver := 'Win98';
          end
          else if (dwMajorVersion =4) and (dwMinorVersion =90) then
            ver := 'WinME' 
          else
            ver :='Unknown';
        end;
      else
        ver := 'Unknown';
    end; //case
   end; //with
  end
  else
    ver := 'Unknown';

    showmessage(ver);
end; 

GetVersionEXはOSVERSIONINFO構造体に各種OSの情報を格納してくれます。
この構造体の各フィールドの情報を元に判別をおこないます。
大きく分けてWindows NT/2000/XP系とWindows 9x/ME系に分かれますが、dwPlatformIdフィールドがVER_PLATFORM_WIN32_NTのとき前者で、VER_PLATFORM_WIN32_WINDOWSのときは後者です。
Windows 95 Windows 98 Windows Me Windows NT 3.51
dwPlatformId 400
dwMajorVersion 4
dwMinorVersion 0
dwPlatformId 400
dwMajorVersion 4
dwMinorVersion 10
dwPlatformId 400
dwMajorVersion 4
dwMinorVersion 90
dwPlatformId 500
dwMajorVersion 3
dwMinorVersion 51
Windows NT 4.0 Windows 2000 Windows XP Windows .NET Server
dwPlatformId 500
dwMajorVersion 4
dwMinorVersion 0
dwPlatformId 500
dwMajorVersion 5
dwMinorVersion 0
dwPlatformId 500
dwMajorVersion 5
dwMinorVersion 1
dwPlatformId 500
dwMajorVersion 5
dwMinorVersion 1
ここの記事を参照しました。人力検索はてなDELPHI 7 にて、OS(WIN2000、WIN XP等)を識別する方法