在delphi中如何获取当前操作系统的版本

解决方案 »

  1.   

    var
      OSVersionInfo: TOSVersionInfo;
    begin
      OSVersionInfo.dwOSVersionInfoSize := SizeOf(OSVersionInfo);
      GetVersionEx(OSVersionInfo);
      showmessage(inttostr(OSVersionInfo.dwPlatformId));
    end;
      

  2.   

    procedure GetBuildInfo(var V1, V2, V3, V4: Word); 
    var 
    VerInfoSize: DWORD; 
    VerInfo: Pointer; 
    VerValueSize: DWORD; 
    VerValue: PVSFixedFileInfo; 
    Dummy: DWORD; 
    begin 
    VerInfoSize := GetFileVersionInfoSize(PChar(ParamStr(0)), Dummy); 
    GetMem(VerInfo, VerInfoSize); 
    GetFileVersionInfo(PChar(ParamStr(0)), 0, VerInfoSize, VerInfo); 
    VerQueryValue(VerInfo, '\', Pointer(VerValue), VerValueSize); 
    with VerValue^ do 
    begin 
    V1 := dwFileVersionMS shr 16; V2 := dwFileVersionMS and $FFFF; 
    V3 := dwFileVersionLS shr 16; 
    V4 := dwFileVersionLS and $FFFF; 
    end; 
    FreeMem(VerInfo, VerInfoSize); 
    end; 
      

  3.   

    unit Unit1; interface uses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls, CommDlg; type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end; 
    type
      TOSVersion = (osUnknown, os95, os95OSR2, os98, os98SE, osNT3, osNT4, os2K, osME, osXP); var
      Form1: TForm1; implementation {$R *.DFM} function GetOS :TOSVersion; 
    var
      OS :TOSVersionInfo; 
    begin
      ZeroMemory(@OS,SizeOf(OS));
      OS.dwOSVersionInfoSize:=SizeOf(OS);
      GetVersionEx(OS);
      Result:=osUnknown;
      if OS.dwPlatformId=VER_PLATFORM_WIN32_NT then begin
        case OS.dwMajorVersion of
          3: Result:=osNT3;
          4: Result:=osNT4;
          5: Result:=os2K;
        end;
        if (OS.dwMajorVersion=5) and (OS.dwMinorVersion=1) then
          Result:=osXP;
      end else begin
        if (OS.dwMajorVersion=4) and (OS.dwMinorVersion=0) then begin
          Result:=os95;
          if (Trim(OS.szCSDVersion)='B') then
            Result:=os95OSR2;
        end else
          if (OS.dwMajorVersion=4) and (OS.dwMinorVersion=10) then begin
            Result:=os98;
            if (Trim(OS.szCSDVersion)='A') then
              Result:=os98SE;
          end else
            if (OS.dwMajorVersion=4) and (OS.dwMinorVersion=90) then
              Result:=osME;
      end; 
    end; 
    procedure TForm1.Button1Click(Sender: TObject); 
    var 
    os:TosVersion; 
    osVersion:string; 
    begin
      os:=Getos;
          case OS of
        os95, os95OSR2: OSVersion:='Windows 95';
        os98: OSVersion:='Windows 98';
        os98SE: OSVersion:='Windows 98 第二版';
        osME: OSVersion:='Windows Millenium Edition';
        osNT3, osNT4: OSVersion:='Windows NT';
        os2K: OSVersion:='Windows 2000';
        osXP: OSVersion:='Windows XP';
      end;
       showmessage(osversion); 
    end; end.