我的程序中想实现这样一个功能:用delphi得到操作系统的版本号?如windows2000,windows98,windows xp,windows me,请问该如何编程实现,谢谢!

解决方案 »

  1.   

    才20分呀,呵呵~~~~
    procedure TMainForm.FormCreate(Sender: TObject);
    var
      osinfo: OSVERSIONINFO;
    begin
      osinfo.dwOSVersionInfoSize:=sizeof(OSVERSIONINFO);
      GetVersionEx(osinfo);
      if (InttoStr(osinfo.dwMajorVersion)+'.'+IntToStr(osinfo.dwMinorVersion)+'.'+IntToStr(osinfo.dwBuildNumber))='5.0.2195' then
       ShowMessage('这是windows 2000');
    end;
    其他操作系统你一测试就知道了
      

  2.   

    function GetOSInfo: string;
    var
      Platform: string;
      BuildNumber: Integer;
    begin
      case Win32Platform of
        VER_PLATFORM_WIN32_WINDOWS:
          begin
            Platform := 'Windows 95';
            BuildNumber := Win32BuildNumber and $0000FFFF;
          end;
        VER_PLATFORM_WIN32_NT:
          begin
            Platform := 'Windows NT';
            BuildNumber := Win32BuildNumber;
          end;
          else
          begin
            Platform := 'Windows';
            BuildNumber := 0;
          end;
      end;
      if (Win32Platform = VER_PLATFORM_WIN32_WINDOWS) or
        (Win32Platform = VER_PLATFORM_WIN32_NT) then
      begin
        if Win32CSDVersion = '' then
          result := Format('%s %d.%d (Build %d)', [Platform, Win32MajorVersion,
            Win32MinorVersion, BuildNumber])
        else
          result := Format('%s %d.%d (Build %d: %s)', [Platform, Win32MajorVersion,
            Win32MinorVersion, BuildNumber, Win32CSDVersion]);
      end
      else
        result := Format('%s %d.%d', [Platform, Win32MajorVersion,
          Win32MinorVersion])
    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.