写代码怎么知道当前用的是什么操作系统和CPU类型(10分)

  • 主题发起人 主题发起人 xieyj
  • 开始时间 开始时间
X

xieyj

Unregistered / Unconfirmed
GUEST, unregistred user!
写代码怎么知道当前用的是什么操作系统和CPU类型
 
GetVersionEx 可获得操作系统类型
 
请具体点
 
  procedure TForm1.Button1Click(Sender: TObject); //判断用户操作系统。
  VAR
  GETVER:OSVERSIONINFO; //声明所需变量,具体内容请参考API函数说明文件。
  RET:LONGBOOL;
  begin
  GETVER.DWOSVERSIONINFOSIZE:=148;
  RET:=GETVERSIONEX(GETVER); //调用API函数判断开始
  IF GETVER.DWPLATFORMID=VER_PLATFORM_WIN32_WINDOWS THEN
  LABEL1.CAPTION:=′您正使用的操作系统是:WINDOWS95/98′;
  IF GETVER.DWPLATFORMID=VER_PLATFORM_WIN32_NT THEN
  LABEL1.CAPTION:=′您正使用的操作系统是:WINDOWS NT′;
  END;
 
var
Form1: TForm1;
implementation
{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var DriveType:WORD; //定义驱动器类型变量
//RootPathName:lpRootPathName;
begin
DriveType:=GetDriveType(0);//获得 RootPathName所对应的驱动器的信息
//DriveType:=GetDriveType(RootPathName);
case DriveType of
0:Lbl_DriverType.Caption:='The drive type cannot be determined';
1:Lbl_DriverType.Caption:='The root directory does not exist';
DRIVE_REMOVABLE :Lbl_DriverType.Caption:='软盘驱动器';
DRIVE_FIXED:Lbl_DriverType.Caption:='硬盘驱动器';
DRIVE_REMOTE:Lbl_DriverType.Caption:='网络驱动器';
DRIVE_CDROM:Lbl_DriverType.Caption:='光盘驱动器';
DRIVE_RAMDISK:Lbl_DriverType.Caption:='内存虚拟盘';
end;;
end;

procedure TForm1.Button2Click(Sender: TObject);
var memostatus:TMEMORYSTATUS; //定义内存结构变量
begin
memostatus.dwLength:=sizeof(TMEMORYSTATUS);
GlobalMemoryStatus(memostatus); //返回内存使用信息
Label3.Caption:=format('共有内存:%d KB,可使用内存:%d KB,已使用百分比:%d',[memostatus.dwTotalPhys div 1024,memostatus.dwAvailPhys div 1024,memostatus.dwMemoryLoad]);
end;

procedure TForm1.Button3Click(Sender: TObject);
var sysinfo:TSYSTEMINFO;
begin //CPU
GetSystemInfo(sysinfo);
case sysinfo.dwProcessorType of
PROCESSOR_INTEL_386:
label5.Caption:=format('%d%s',[sysinfo.dwNumberOfProcessors,'Intel_80386']);
PROCESSOR_INTEL_486:
label5.Caption:=format('%d %s',[sysinfo.dwNumberOfProcessors,'Intel_80486']);
PROCESSOR_INTEL_PENTIUM:
label5.Caption:=format('%d %s',[sysinfo.dwNumberOfProcessors,'Intel_Pentium']);
PROCESSOR_MISP_R4000:
label5.Caption:=format('%d %s',[sysinfo.dwNumberOfProcessors,'MISP_R4000']);
PROCESSOR_ALPHA_21064:
label5.Caption:=format('%d %s',[sysinfo.dwNumberOfProcessors,'ALPHA_21064']);
end;
end;

你试试吧~ 驱动 内存 CPU 都有!
 
编译时提示这样的错误:
[Error] frmmain.pas(187): Illegal character in input file: ' ' ($A1A1)
[Error] frmmain.pas(200): Undeclared identifier: 'PROCESSOR_INTEL_386'
[Error] frmmain.pas(202): Undeclared identifier: 'PROCESSOR_INTEL_486'
[Error] frmmain.pas(202): Duplicate case label
[Error] frmmain.pas(204): Undeclared identifier: 'PROCESSOR_INTEL_PENTIUM'
[Error] frmmain.pas(204): Duplicate case label
[Error] frmmain.pas(206): Undeclared identifier: 'PROCESSOR_MISP_R4000'
[Error] frmmain.pas(206): Duplicate case label
[Error] frmmain.pas(208): Undeclared identifier: 'PROCESSOR_ALPHA_21064'
[Error] frmmain.pas(208): Duplicate case label
 
TO:wuyongyuan
你这样不能具体判断是WINDOWS 95还是WINDOWS 98系统,还有是WIN2000还是WINNT
 
呵呵。。。是没错啊,不过你如果确切要windows版本信息,你可以到注册表提取呀!
这样更简单!
 
TO jrq:
编译时提示这样的错误:
[Error] frmmain.pas(187): Illegal character in input file: ' ' ($A1A1)
[Error] frmmain.pas(200): Undeclared identifier: 'PROCESSOR_INTEL_386'
[Error] frmmain.pas(202): Undeclared identifier: 'PROCESSOR_INTEL_486'
[Error] frmmain.pas(202): Duplicate case label
[Error] frmmain.pas(204): Undeclared identifier: 'PROCESSOR_INTEL_PENTIUM'
[Error] frmmain.pas(204): Duplicate case label
[Error] frmmain.pas(206): Undeclared identifier: 'PROCESSOR_MISP_R4000'
[Error] frmmain.pas(206): Duplicate case label
[Error] frmmain.pas(208): Undeclared identifier: 'PROCESSOR_ALPHA_21064'
[Error] frmmain.pas(208): Duplicate case label
这个怎么办。
 
前面加上
const
PROCESSOR_INTEL_386=386;
PROCESSOR_INTEL_486=486;
PROCESSOR_INTEL_PENTIUM=586;
PROCESSOR_INTEL_IA64=2200;
PROCESSOR_MIPS_R4000=4000;
PROCESSOR_ALPHA_21064=21064;

 
多人接受答案了。
 
后退
顶部