锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

DELPHI利用WMI获取CPU参数

时间:2022-10-06 09:00:01 集成电路插座插槽

DELPHI利用WMI获取CPU参数,实现方法与之前写的文章网卡参数一致,这里不再重复,以下将是CPU附上参数表

procedure TFrmMain.RzGroup1Items2Click(Sender: TObject); var    CpuArc,INum:string;    i:Integer;     Wmi, Objs, Obj: oleVariant;     Enum: IEnumVariant;     C: Cardinal;     Str,str1:string; begin   Memo1.Clear;    Memo1.Lines.Add('【CPU参数信息);   Wmi:= CreateOleObject('WbemScripting.SWbemLocator');   Objs := Wmi.ConnectServer('.','root/cimv2').ExecQuery('Select * from Win32_Processor');   Enum := IEnumVariant(IUnknown(Objs._NewEnum));   Enum.Reset;   while (Enum.Next(1,Obj
      
       ,
       C
       )
       =
       s_ok
       ) 
       do 
       begin 
       str1
       :
       =
       'DeviceID'
       ; 
       Obj 
       :
       = 
       Obj
       .
       Properties_
       .
       Item
       (
       str1
       , 
       0
       )
       .
       Value
       ; 
       if 
       VarIsNull
       (
       obj
       ) 
       then 
       begin 
       Str
       :
       =
       'ERROR'
       ; 
       end
       ; 
       if 
       VarIsArray
       (
       obj
       ) 
       then 
       begin 
       str
       :
       =
       Obj
       [
       0
       ]
       ; 
       end
       ; 
       if 
       VarIsStr
       (
       obj
       ) 
       or 
       VarIsCustom
       (
       obj
       ) 
       or 
       VarIsFloat
       (
       obj
       ) 
       or 
       VarIsNumeric
       (
       obj
       ) 
       or 
       VarIsOrdinal
       (
       obj
       ) 
       then 
       begin 
       str
       :
       =
       Obj
       ; 
       end
       ; 
       Memo1
       .
       Lines
       .
       Add
       (
       ''
       )
       ; 
       Memo1
       .
       Lines
       .
       Add
       (
       'CPU插槽: '
       +
       str
       )
       ; 
       Memo1
       .
       Lines
       .
       Add
       (
       'CPU型号: '
       +
       GetWMISub
       (
       'Processor'
       ,
       'name'
       ,
       str1
       ,
       str
       )
       )
       ; 
       Memo1
       .
       Lines
       .
       Add
       (
       'CPU描述: '
       +
       GetWMISub
       (
       'Processor'
       ,
       'Description'
       ,
       str1
       ,
       Str
       )
       )
       ; 
       Memo1
       .
       Lines
       .
       Add
       (
       'CPU核心数: '
       +
       GetWMISub
       (
       'Processor'
       ,
       'NumberOfCores'
       ,
       str1
       ,
       Str
       )
       )
       ; 
       Memo1
       .
       Lines
       .
       Add
       (
       'CPU ID: '
       +
       GetWMISub
       (
       'Processor'
       ,
       'ProcessorId'
       ,
       str1
       ,
       Str
       )
       )
       ; 
       Memo1
       .
       Lines
       .
       Add
       (
       'CPU线程数: '
       +
       GetWMISub
       (
       'Processor'
       ,
       'NumberOfLogicalProcessors'
       ,
       str1
       ,
       Str
       )
       )
       ; 
       Memo1
       .
       Lines
       .
       Add
       (
       'CPU主频: '
       +
       GetWMISub
       (
       'Processor'
       ,
       'CurrentClockSpeed'
       ,
       str1
       ,
       Str
       )
       +
       ' MHz'
       )
       ; 
       Memo1
       .
       Lines
       .
       Add
       (
       'CPU外频: '
       +
       GetWMISub
       (
       'Processor'
       ,
       'ExtClock'
       ,
       str1
       ,
       Str
       )
       +
       ' MHz'
       )
       ; 
       Memo1
       .
       Lines
       .
       Add
       (
       'CPU物料核心数: '
       +
       GetWMISub
       (
       'Processor'
       ,
       'NumberOfCores'
       ,
       str1
       ,
       Str
       )
       )
       ; 
       Memo1
       .
       Lines
       .
       Add
       (
       'CPU逻辑核心数: '
       +
       GetWMISub
       (
       'Processor'
       ,
       'NumberOfLogicalProcessors'
       ,
       str1
       ,
       Str
       )
       )
       ; 
       INum
       :
       = 
       GetWMISub
       (
       'Processor'
       ,
       'Architecture'
       ,
       str1
       ,
       Str
       )
       ; 
       i
       :
       =
       StrToInt
       (
       INum
       )
       ; 
       case 
       i 
       of 
       0
       : 
       CpuArc
       :
       =
       'X86'
       ; 
       1
       : 
       CpuArc
       :
       =
       'MIPS'
       ; 
       2
       : 
       CpuArc
       :
       =
       'Alpha'
       ; 
       3
       : 
       CpuArc
       :
       =
       'PowerPC'
       ; 
       5
       : 
       CpuArc
       :
       =
       'ARM'
       ; 
       6
       : 
       CpuArc
       :
       =
       'Itanium-based systems'
       ; 
       9
       : 
       CpuArc
       :
       =
       'X64'
       ; 
       end
       ; 
       Memo1
       .
       Lines
       .
       Add
       (
       'CPU架构: '
       +
       CpuArc
       )
       ; 
       Memo1
       .
       Lines
       .
       Add
       (
       '二级缓存大小: '
       +
       GetWMISub
       (
       'Processor'
       ,
       'L2CacheSize'
       ,
       str1
       ,
       Str
       )
       )
       ; 
       Memo1
       .
       Lines
       .
       Add
       (
       '三级缓存大小: '
       +
       GetWMISub
       (
       'Processor'
       ,
       'L3CacheSize'
       ,
       str1
       ,
       Str
       )
       )
       ; 
       Memo1
       .
       Lines
       .
       Add
       (
       '当前系统类型: '
       +
       GetWMISub
       (
       'Processor'
       ,
       'AddressWidth'
       ,
       str1
       ,
       Str
       )
       +
       '位'
       )
       ; 
       end
       ; 
       end
       ; 
      

公共函数

function GetWMISub(WMIType,WMIProperty,WMISearch,WMISearchText: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 + ' where '+WMISearch+' = '+ '"'+WMISearchText+'"');
  Enum := IEnumVariant(IUnknown(Objs._NewEnum));
  Enum.Reset;
  Enum.Next(1,Obj,C);

      Obj := Obj.Properties_.Item(WMIProperty, 0).Value;

      if VarIsNull(obj) then
      begin
        Result:='Unknow';
      end;

      if VarIsArray(obj) then
      begin
        Result := Obj[0];
      end;

      if VarIsStr(obj) or VarIsCustom(obj) or VarIsFloat(obj) or VarIsNumeric(obj) or VarIsOrdinal(obj) then
      begin
        Result:= Obj;
      end;

end;

WMI-Win32_Processor CPU 参数
AddressWidth --在32位操作系统,该值是32,在64位操作系统是64。
Architecture --所使用的平台的处理器架构。
AssetTag --代表该处理器的资产标签
Availability --设备的状态。
Caption --设备的简短描述
Characteristics --处理器支持定义的功能
ConfigManagerErrorCode --Windows API的配置管理器错误代码
ConfigManagerUserConfig --如果为TRUE,该装置是使用用户定义的配置
CpuStatus --处理器的当前状态
CreationClassName --出现在用来创建一个实例继承链的第一个具体类的名称
CurrentClockSpeed --处理器的当前速度,以MHz为单位
CurrentVoltage --处理器的电压。如果第八位被设置,位0-6包含电压乘以10,如果第八位没有置位,则位在VoltageCaps设定表示的电压值。 CurrentVoltage时SMBIOS指定的电压值只设置
DataWidth --在32位处理器,该值是32,在64位处理器是64
Description --描述
DeviceID --在系统上的处理器的唯一标识符
ErrorCleared --如果为真,报上一个错误代码的被清除
ErrorDescription --错误的代码描述
ExtClock --外部时钟频率,以MHz为单位
Family --处理器系列类型
InstallDate --安装日期
L2CacheSize --二级缓存大小
L2CacheSpeed --二级缓存处理器的时钟速度
L3CacheSize --三级缓存的大小
L3CacheSpeed --三级缓存处理器的时钟速度
LastErrorCode --报告的逻辑设备上一个错误代码
Level --处理器类型的定义。该值取决于处理器的体系结构
LoadPercentage --每个处理器的负载能力,平均到最后一秒
Manufacturer --处理器的制造商
MaxClockSpeed --处理器的最大速度,以MHz为单位
Name --处理器的名称
NumberOfCores --芯为处理器的当前实例的数目。核心是在集成电路上的物理处理器
NumberOfEnabledCore --每个处理器插槽启用的内核数
NumberOfLogicalProcessors --用于处理器的当前实例逻辑处理器的数量
OtherFamilyDescription --处理器系列类型
PartNumber --这款处理器的产品编号制造商所设置
PNPDeviceID --即插即用逻辑设备的播放设备标识符
PowerManagementCapabilities --逻辑设备的特定功率相关的能力阵列
PowerManagementSupported --如果为TRUE,该装置的功率可以被管理,这意味着它可以被放入挂起模式
ProcessorId --描述处理器功能的处理器的信息
ProcessorType --处理器的主要功能
Revision --系统修订级别取决于体系结构
Role --所述处理器的作用
SecondLevelAddressTranslationExtensions --如果为True,该处理器支持用于虚拟地址转换扩展
SerialNumber --处理器的序列号
SocketDesignation --芯片插座的线路上使用的类型
Status --对象的当前状态
StatusInfo --对象的当前状态信息
Stepping --在处理器家族处理器的版本
SystemCreationClassName --创建类名属性的作用域计算机的价值
SystemName --系统的名称
ThreadCount --每个处理器插槽的线程数
UniqueId --全局唯一标识符的处理器
UpgradeMethod --CPU插槽的信息
Version --依赖于架构处理器的版本号
VirtualizationFirmwareEnabled --如果真,固件可以虚拟化扩展
VMMonitorModeExtensions --如果为True,该处理器支持Intel或AMD虚拟机监控器扩展。
VoltageCaps --该处理器的电压的能力

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章