delphi WMI 取硬件信息


本文整理自网络,侵删。

 
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  {Rec_Wmi = record
    ComputerName: string;
    Namespace: string;
    User: string;
    Password: string;
    WMIType: string;
    Enum: IEnumVariant;
    class function GetWmiEnum(WMIType: string; var AEnum: IEnumVariant; Namespace: string = 'root\cimv2';
      Where: string = ''; ComputerName: string = ''; User: string = ''; Password: string = ''): string; static;
    class function GetWMIProperty(Enum: IEnumVariant; WMIProperty: string; Index: integer = 0): OleVariant; static;
    class function SetWMIProperty(Enum: IEnumVariant; WMIProperty: string; value: string; Index: integer = 0): string; static;
    function GetEnum(Where: string = ''): string;
    function GetProperty(WMIProperty: string; Index: integer = 0): OleVariant;
    function SetProperty(WMIProperty: string; value: string): string;
  end;}


  TForm1 = class(TForm)
    Btnv_1: TButton;
    procedure Btnv_1Click(Sender: TObject);
  private
  public
  end;

var
  Form1: TForm1;

implementation
uses
  ActiveX,ComObj;

{$R *.dfm}

function GetWMIProperty(WMIType, WMIProperty:AnsiString):String;
var
  Wmi, Objs, Obj:OleVariant;
  Enum:IEnumVariant;
  C:Cardinal;
begin
  Result := '';
  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
    begin
      Result:=Obj[0]
    end else
    begin
      Result := Obj;
    end;
  except
     Result:='error';
  end;
end;

procedure TForm1.Btnv_1Click(Sender: TObject);
begin
  ShowMessage(GetWMIProperty('BIOS','BIOSVersion'));          //获得BIOS版本
  ShowMessage(GetWMIProperty('DiskDrive','SerialNumber'));     //获得第一块硬盘的设备标示
  ShowMessage(GetWMIProperty('Processor','ProcessorId'));     //获得CPUID。
end;

end.
 

相关阅读 >>

Delphi 一行一行读取txt文件

Delphi runasadmin 运行程序并申请管理员权限

Delphi线程中动态创建ado控件

Delphi 设置文本框中光标的位置在最后

Delphi 如何把一个exe做为res加入到dll中,并在运行时生成exe文件执行

orangeui作者开源作品

Delphi 获取内网所有ip地址

Delphi 2009 泛型容器单元(generics.collections)[3]: tstack<t>

Delphi中如何用一个按钮控制开与关两个状态

Delphi生成随机字符串

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...