[Delphi] 用API函数得到操作系统类型

最近一个东西想要升级前判断本级操作系统:

程序代码 程序代码
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.


[本日志由 hkylin 于 2010-05-02 01:19 AM 编辑]
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: API函数 操作系统类型 delphi
相关日志:
评论: 0 | 引用: 0 | 查看次数: 283
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 1000 字 | UBB代码 开启 | [img]标签 开启