发表一个最简单的XP以上系统中获取CPUID、硬盘序列号、BIOS序列号等等的函数!(100分)

  • 主题发起人 takashiki
  • 开始时间
T

takashiki

Unregistered / Unconfirmed
GUEST, unregistred user!
//uses ActiveX, ComObj;
//这个函数使用了WMI,而且只获取第一个硬件/软件设置的信息。
//用户可以根据需要自行修改。
function GetWMIProperty(WMIType, WMIProperty:String):String;
var
Wmi, Objs, Obj:OleVariant;
Enum:IEnumVariant;
C:Cardinal;
begin
Wmi:= CreateOleObject('WbemScripting.SWbemLocator');
Objs := Wmi.ConnectServer('.','root/cimv2').ExecQuery('Select * from Win32_'+ WMIType);
Enum:=IEnumVariant(IUnknown(Objs._NewEnum));
Enum.Reset;
Enum.Next(1,Obj,C);
//需要更多的信息请使用循环
Obj:=Obj.Properties_.Item(WMIProperty,0).Value;
if VarIsArray(Obj) then
Result:=Obj[0]
else
Result:=Obj;
end;

函数的调用:
procedure TForm1.btn6Click(Sender: TObject);
begin
ShowMessage(GetWMIProperty('BIOS','BIOSVersion'));
//获得BIOS版本
ShowMessage(GetWMIProperty('DiskDrive','PNPDeviceID'));
//获得第一块硬盘的设备标示
ShowMessage(GetWMIProperty('Processor','ProcessorId'));
//获得CPUID。
end;
其他功能可以由用户自己完成,因为WMI内容太多了,我不愿贴出太多。
 
不错,收了。。
 
哈哈....不愿贴出那么多 你贴这个干嘛 贴出来吧 让大家学习学习
 
to panzichan
因为WMI内容实在是太多了,又看到网上好多人需要获得关于硬件的这儿那儿的问题,就贴出来了,哈哈。
 
顶部