网上有代码,都是获取版本号,我想获取系统描述,比如“Windows XP Home”或“Windows XP professional”
解决方案 »
- datasnap里如何使用insert into,delete等sql语句?
- dxdbtreelist 如何作到 双击时不展开也不合并
- 怎么把dbtreelist中选中的多条记录,插入选中的dbtreeview节点下面。
- 谁会解码Base64
- buddydeus进来接分
- 请问结婚的delphi程序员,老公过生日买什么礼物好?UP不一定有分!
- 如何获得TWebBrowser的Back和Forward的状态
- 为什么我的delph5仅仅可以运行,F7、F8都不能使用?
- 存盘问题
- 请问怎样知道自己的ADO版本是否是最新的2.6。Delphi5和Access2000/97是否真的有问题(下补丁太大了)。DElphi到底该配哪个数据库?又该用哪个东东来建库,希望从单机和网络两个方面来讲。小子真诚恳请各路高手赐教,谢谢!
- DBgrideh动态添加列
- DBChar中能否限制X轴显示的项目数量
重点看这个字段:wSuiteMask
unit Unit1;interfaceuses
Windows, SysUtils, Forms, StdCtrls, Classes, Controls;
{$IFDEF CONDITIONALEXPRESSIONS}
{$IF Defined(TOSVersionInfoEx)}
{$DEFINE TOSVERSIONINFOEX_DEFINED}
{$IFEND}
{$ENDIF}
{$IFNDEF TOSVERSIONINFOEX_DEFINED}type
POSVersionInfoEx = ^TOSVersionInfoEx;
TOSVersionInfoEx = packed record
dwOSVersionInfoSize: DWORD;
dwMajorVersion : DWORD;
dwMinorVersion : DWORD;
dwBuildNumber : DWORD;
dwPlatformId : DWORD;
szCSDVersion : array [0..127] of AnsiChar;
wServicePackMajor : Word;
wServicePackMinor : Word;
wSuiteMask : Word;
wProductType : Byte;
wReserved : Byte;
end;const
VER_SERVER_NT = $80000000;
{$EXTERNALSYM VER_SERVER_NT}
VER_WORKSTATION_NT = $40000000;
{$EXTERNALSYM VER_WORKSTATION_NT}
VER_SUITE_SMALLBUSINESS = $00000001;
{$EXTERNALSYM VER_SUITE_SMALLBUSINESS}
VER_SUITE_ENTERPRISE = $00000002;
{$EXTERNALSYM VER_SUITE_ENTERPRISE}
VER_SUITE_BACKOFFICE = $00000004;
{$EXTERNALSYM VER_SUITE_BACKOFFICE}
VER_SUITE_COMMUNICATIONS = $00000008;
{$EXTERNALSYM VER_SUITE_COMMUNICATIONS}
VER_SUITE_TERMINAL = $00000010;
{$EXTERNALSYM VER_SUITE_TERMINAL}
VER_SUITE_SMALLBUSINESS_RESTRICTED = $00000020;
{$EXTERNALSYM VER_SUITE_SMALLBUSINESS_RESTRICTED}
VER_SUITE_EMBEDDEDNT = $00000040;
{$EXTERNALSYM VER_SUITE_EMBEDDEDNT}
VER_SUITE_DATACENTER = $00000080;
{$EXTERNALSYM VER_SUITE_DATACENTER}
VER_SUITE_SINGLEUSERTS = $00000100;
{$EXTERNALSYM VER_SUITE_SINGLEUSERTS}
VER_SUITE_PERSONAL = $00000200;
{$EXTERNALSYM VER_SUITE_PERSONAL}
VER_SUITE_BLADE = $00000400;
{$EXTERNALSYM VER_SUITE_BLADE}
VER_SUITE_EMBEDDED_RESTRICTED = $00000800;
{$EXTERNALSYM VER_SUITE_EMBEDDED_RESTRICTED}
VER_SUITE_SECURITY_APPLIANCE = $00001000;
{$EXTERNALSYM VER_SUITE_SECURITY_APPLIANCE}const
VER_NT_WORKSTATION = $0000001;
{$EXTERNALSYM VER_NT_WORKSTATION}
VER_NT_DOMAIN_CONTROLLER = $0000002;
{$EXTERNALSYM VER_NT_DOMAIN_CONTROLLER}
VER_NT_SERVER = $0000003;
{$EXTERNALSYM VER_NT_SERVER}{$ENDIF} // TOSVERSIONINFOEX_DEFINEDtype
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end; function GetVersionExA(var lpVersionInformation: TOSVersionInfoEX): BOOL;
stdcall; external kernel32;var
Form1:TForm1;implementation{$R *.dfm}function GetOSVersionText: string;
var
Info: TOSVersionInfoEx;
Key: HKEY;
begin
Result := '';
Info.dwOSVersionInfoSize:=SizeOf(TOSVersionInfoEx);
if (not GetVersionExA(Info)) then
Exit;
Result:='Microsoft ';
case Info.dwPlatformId of
{ Win32s }
VER_PLATFORM_WIN32s:
Result := Result+'Win32s';
{ Windows 9x }
VER_PLATFORM_WIN32_WINDOWS:
if (Info.dwMajorVersion = 4) and (Info.dwMinorVersion = 0) then
begin
Result := Result+'Windows 95 ';
if (Info.szCSDVersion[1] in ['B', 'C']) then
Result := Result +' OSR2';
end
else if (Info.dwMajorVersion = 4) and (Info.dwMinorVersion = 10) then
begin
Result := Result+'Windows 98 ';
if (Info.szCSDVersion[1] = 'A') then
Result := Result + ' SE';
end
else if (Info.dwMajorVersion = 4) and (Info.dwMinorVersion = 90) then
Result := Result+'Windows Millennium Edition ';
{ Windows NT }
VER_PLATFORM_WIN32_NT:
begin
{ Version }
if Info.dwMajorVersion=6 then begin
if Info.dwMinorVersion=0 then begin
if Info.wProductType= VER_NT_WORKSTATION then
Result:=Result+'Vista ' else Result:=Result+'Server 2008 ';
end else
if Info.dwMinorVersion= 1 then Result:=Result+'7 ';
end else
if (Info.dwMajorVersion = 5) and (Info.dwMinorVersion = 2) then
Result := Result+'Windows Server 2003 '
else if (Info.dwMajorVersion = 5) and (Info.dwMinorVersion = 1) then
Result := Result+'Windows XP '
else if (Info.dwMajorVersion = 5) and (Info.dwMinorVersion = 0) then
Result := Result+'Windows 2000 '
else
Result := Result+'Windows NT ';
{ Extended }
if (Info.dwOSVersionInfoSize >= SizeOf(TOSVersionInfoEx)) then
begin
{ ProductType }
if (Info.wProductType = VER_NT_WORKSTATION) then
begin
if (Info.dwMajorVersion = 4) then
Result := Result + #10'Workstation 4.0 '
else if(Info.wSuiteMask and VER_SUITE_PERSONAL <> 0) then
Result := Result + #10'Home Edition '
else
Result := Result + #10'Professional ';
end
else if (Info.wProductType = VER_NT_SERVER) then
begin
if (Info.dwMajorVersion = 5) and (Info.dwMinorVersion = 2) then
begin
if (Info.wSuiteMask and VER_SUITE_DATACENTER <> 0) then
Result := Result + #10'Datacenter Edition'
else if (Info.wSuiteMask and VER_SUITE_ENTERPRISE <> 0) then
Result := Result + #10'Enterprise Edition'
else if (Info.wSuiteMask = VER_SUITE_BLADE) then
Result := Result + #10'Web Edition'
else
Result := Result + #10'Standard Edition';
end
else if (Info.dwMajorVersion = 5) and (Info.dwMinorVersion = 0) then
begin
if (Info.wSuiteMask and VER_SUITE_DATACENTER <> 0) then
Result := Result + #10'Datacenter Server'
else if (Info.wSuiteMask and VER_SUITE_ENTERPRISE <> 0) then
Result := Result + #10'Advanced Server'
else
Result := Result + #10'Server';
end
else
begin
Result := Result + #10'Server ' +
IntToStr(Info.dwMajorVersion) + '.' +
IntToStr(Info.dwMinorVersion);
if (Info.wSuiteMask and VER_SUITE_ENTERPRISE <> 0) then
Result := Result + ', Enterprise Edition';
end;
end;
end;
{ CSDVersion }
if (Info.dwMajorVersion = 4) and
(StrIComp(Info.szCSDVersion, 'Service Pack 6') = 0) and (RegOpenKeyEx(HKEY_LOCAL_MACHINE,
'SOFTWARE\Microsoft\Windows NT\CurrentVersion\Hotfix\Q246009', 0,
KEY_QUERY_VALUE, Key) = ERROR_SUCCESS) then
begin
Result := Result + #10'Service Pack 6a';
RegCloseKey(Key);
end
else
Result := Result + #10 + StrPas(Info.szCSDVersion);
Result := Result + #10'(Build ' +
IntToStr(Info.dwBuildNumber and $FFFF) + ')';
end;
end;
end;procedure TForm1.Button1Click(Sender: TObject);
begin
edit1.Text:= GetOSVersionText;
end;