Delphi获取CPUID

调用:CPUID := GetWMIProperty(‘Processor’, ‘ProcessorId’));

需要uses Activex, ComObj, System.Variants;

{-------------------------------------------------------------------------------
  过程名:    GetWMIProperty 获取CPUID
  作者:      Anchep
  日期:      2018.11.27
  参数:      WMIType, WMIProperty: AnsiString
  返回值:    string
-------------------------------------------------------------------------------}
function GetWMIProperty(WMIType, WMIProperty: AnsiString): string;
var
  Wmi, Objs, Obj: OleVariant;
  Enum: IEnumVariant;
  C: Cardinal;
begin
  try
    Wmi := CreateOleObject(AnsiString('WbemScripting.SWbemLocator'));
    Objs := Wmi.ConnectServer(AnsiString('.'), AnsiString('root\cimv2')).ExecQuery(AnsiString('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;
  except
    Result := 'Error';
  end;
end;

发表评论