现在可以获得机器的CPU,内存,IP等一些硬件信息,但我真正需要的是主机的型号,生产日期等信息,我看鲁大师或是驱动人生,能够获取主机的具体型号,当然主要是针对品牌机,不知道是如何做到的呢?
解决方案 »
- Delphi keybd_event方法模拟按下冒号(:)和反斜杠(\)
- 有无办法将密码等简单字符存放U盘的主控芯片中,而不是内存芯片,例如将vid/pid当密码,但不知道如何修改,另有一帖问题已解决,但无人回复,请速来取分
- delphi2007 如何保存自定义的IDE界面
- 求教,delphi可不可以调C#写的dll
- 为什么外国人的软件都这么强??
- 如何释放动态链表?
- 调用短信平台的接口发短信时,如果发送内容为中文,则显示为‘???’,请高手指教
- Toolbar中的Toolbutton上面的.ico图标是如何导入的?
- 关于窗体定位的一个问题(50分)
- 给各位大虾加分100...请给个答案
- 邮箱服务都已开启,xe3发邮件报错:mail from address must be same as authrization user
- 左右箭头的事件
GetRomBiosString
具体详细说明呢?
http://blog.csdn.net/zoufeiyy/article/details/1864312
http://blog.sina.com.cn/s/blog_555305900100c96q.html
http://www.cfanz.cn/index.php?c=article&a=read&id=73759 http://zhoufoxcn.blog.51cto.com/792419/169000/
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 VarIsNull(Obj) then
Result := 'null'
else if VarIsArray(Obj) then Result:=Obj[0]
else Result := Obj;
end;
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ActiveX, ComObj;type
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
Button2: TButton;
Button3: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementationuses
uSystem;{$R *.dfm}function GetWMIClass(StrClass: string): IEnumvariant;
function GetWMIObject(const objectName: string): IDispatch;
var
chEaten: Integer;
BindCtx: IBindCtx;
Moniker: IMoniker;
begin
OleCheck(CreateBindCtx(0, BindCtx));
OleCheck(MkParseDisplayName(BindCtx, StringToOleStr(objectName), chEaten,
Moniker));
OleCheck(Moniker.BindToObject(BindCtx, nil, IDispatch, Result));
end;
var
objWMIService: OLEVariant;
colItems: OLEVariant;
begin
objWMIService := GetWMIObject('winmgmts:\\localhost\root\cimv2');
colItems := objWMIService.ExecQuery
('SELECT * FROM ' + StrClass, 'WQL', 0);
Result := IUnknown(colItems._NewEnum) as IEnumvariant;
end;procedure TForm1.Button1Click(Sender: TObject);
begin
try
Memo1.Lines.Add('DiskIndex: ' + GetWMIProperty('DiskPartition WHERE Bootable = TRUE', 'DiskIndex'));
except on e: exception do
Memo1.Lines.Add('DiskIndex Error: ' + e.Message);
end; try
Memo1.Lines.Add('DiskDrive SerialNumber: ' + GetWMIProperty('DiskDrive WHERE Index = 0 ', 'SerialNumber'));
except on e: exception do
Memo1.Lines.Add('DiskDrive SerialNumber Error: ' + e.Message);
end; try
Memo1.Lines.Add('DiskDrive PNPDeviceID: ' + GetWMIProperty('DiskDrive', 'PNPDeviceID'));
except on e: exception do
Memo1.Lines.Add('DiskDrive PNPDeviceID Error: ' + e.Message);
end; try
Memo1.Lines.Add('BIOS SerialNumber: ' + GetWMIProperty('BIOS', 'SerialNumber'));
except on e: exception do
Memo1.Lines.Add('BIOS SerialNumber Error: ' + e.Message);
end; try
Memo1.Lines.Add('BIOS PNPDeviceID: ' + GetWMIProperty('BIOS', 'PNPDeviceID'));
except on e: exception do
Memo1.Lines.Add('BIOS PNPDeviceID Error: ' + e.Message);
end; try
Memo1.Lines.Add('BaseBoard SerialNumber: ' + GetWMIProperty('BaseBoard', 'SerialNumber'));
except on e: exception do
Memo1.Lines.Add('BaseBoard SerialNumber Error: ' + e.Message);
end; {try
Memo1.Lines.Add('NetworkAdapter MACAddress: ' + GetWMIProperty('NetworkAdapter', 'MACAddress'));
except on e: exception do
Memo1.Lines.Add('NetworkAdapter MACAddress Error: ' + e.Message);
end; try
Memo1.Lines.Add('NetworkAdapter PNPDeviceID: ' + GetWMIProperty('NetworkAdapter', 'PNPDeviceID'));
except on e: exception do
Memo1.Lines.Add('NetworkAdapter PNPDeviceID Error: ' + e.Message);
end;} try
Memo1.Lines.Add('NetworkAdapter MACAddress: ' + GetWMIProperty('NetworkAdapter WHERE ((MACAddress IS NOT NULL) AND (Manufacturer <> ''Microsoft''))', 'MACAddress'));
except on e: exception do
Memo1.Lines.Add('NetworkAdapter MACAddress Error: ' + e.Message);
end; try
Memo1.Lines.Add('NetworkAdapter PNPDeviceID: ' + GetWMIProperty('NetworkAdapter WHERE ((MACAddress IS NOT NULL) AND (Manufacturer <> ''Microsoft''))', 'PNPDeviceID'));
except on e: exception do
Memo1.Lines.Add('NetworkAdapter PNPDeviceID Error: ' + e.Message);
end; try
Memo1.Lines.Add('Processor ID: ' + GetWMIProperty('Processor', 'ProcessorId'));
except on e: exception do
Memo1.Lines.Add('Processor ID Error: ' + e.Message);
end;
end;procedure TForm1.Button2Click(Sender: TObject);
var
oEnum: IEnumvariant;
Item: OLEVariant;
iValue: LongWord;
begin
oEnum := GetWMIClass('Win32_NetworkAdapterConfiguration where IPEnabled=True');
while (oEnum.Next(1, Item, iValue) = 0) do
begin
Memo1.Lines.Add('MacAddress:' + VarToStr(Item.MACAddress));
end;
end;procedure TForm1.Button3Click(Sender: TObject);
begin
Memo1.Lines.Add(GetIdeDiskSerialNumber);
end;end.
找到了一个可以获取硬件信息的控件,但是在安装过程中提示有错误,郁闷!
uSystem;来自哪??
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 VarIsNull(Obj) then
Result := 'null'
else if VarIsArray(Obj) then Result:=Obj[0]
else Result := Obj;
end;
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ActiveX, ComObj;type
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
Button2: TButton;
Button3: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}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 VarIsNull(Obj) then
Result := 'null'
else if VarIsArray(Obj) then Result:=Obj[0]
else Result := Obj;
end;function GetWMIClass(StrClass: string): IEnumvariant;
function GetWMIObject(const objectName: string): IDispatch;
var
chEaten: Integer;
BindCtx: IBindCtx;
Moniker: IMoniker;
begin
OleCheck(CreateBindCtx(0, BindCtx));
OleCheck(MkParseDisplayName(BindCtx, StringToOleStr(objectName), chEaten,
Moniker));
OleCheck(Moniker.BindToObject(BindCtx, nil, IDispatch, Result));
end;
var
objWMIService: OLEVariant;
colItems: OLEVariant;
begin
objWMIService := GetWMIObject('winmgmts:\\localhost\root\cimv2');
colItems := objWMIService.ExecQuery
('SELECT * FROM ' + StrClass, 'WQL', 0);
Result := IUnknown(colItems._NewEnum) as IEnumvariant;
end;procedure TForm1.Button1Click(Sender: TObject);
begin
try
Memo1.Lines.Add('DiskIndex: ' + GetWMIProperty('DiskPartition WHERE Bootable = TRUE', 'DiskIndex'));
except on e: exception do
Memo1.Lines.Add('DiskIndex Error: ' + e.Message);
end; try
Memo1.Lines.Add('DiskDrive SerialNumber: ' + GetWMIProperty('DiskDrive WHERE Index = 0 ', 'SerialNumber'));
except on e: exception do
Memo1.Lines.Add('DiskDrive SerialNumber Error: ' + e.Message);
end; try
Memo1.Lines.Add('DiskDrive PNPDeviceID: ' + GetWMIProperty('DiskDrive', 'PNPDeviceID'));
except on e: exception do
Memo1.Lines.Add('DiskDrive PNPDeviceID Error: ' + e.Message);
end; try
Memo1.Lines.Add('BIOS SerialNumber: ' + GetWMIProperty('BIOS', 'SerialNumber'));
except on e: exception do
Memo1.Lines.Add('BIOS SerialNumber Error: ' + e.Message);
end; try
Memo1.Lines.Add('BIOS PNPDeviceID: ' + GetWMIProperty('BIOS', 'PNPDeviceID'));
except on e: exception do
Memo1.Lines.Add('BIOS PNPDeviceID Error: ' + e.Message);
end; try
Memo1.Lines.Add('BaseBoard SerialNumber: ' + GetWMIProperty('BaseBoard', 'SerialNumber'));
except on e: exception do
Memo1.Lines.Add('BaseBoard SerialNumber Error: ' + e.Message);
end; {try
Memo1.Lines.Add('NetworkAdapter MACAddress: ' + GetWMIProperty('NetworkAdapter', 'MACAddress'));
except on e: exception do
Memo1.Lines.Add('NetworkAdapter MACAddress Error: ' + e.Message);
end; try
Memo1.Lines.Add('NetworkAdapter PNPDeviceID: ' + GetWMIProperty('NetworkAdapter', 'PNPDeviceID'));
except on e: exception do
Memo1.Lines.Add('NetworkAdapter PNPDeviceID Error: ' + e.Message);
end;} try
Memo1.Lines.Add('NetworkAdapter MACAddress: ' + GetWMIProperty('NetworkAdapter WHERE ((MACAddress IS NOT NULL) AND (Manufacturer <> ''Microsoft''))', 'MACAddress'));
except on e: exception do
Memo1.Lines.Add('NetworkAdapter MACAddress Error: ' + e.Message);
end; try
Memo1.Lines.Add('NetworkAdapter PNPDeviceID: ' + GetWMIProperty('NetworkAdapter WHERE ((MACAddress IS NOT NULL) AND (Manufacturer <> ''Microsoft''))', 'PNPDeviceID'));
except on e: exception do
Memo1.Lines.Add('NetworkAdapter PNPDeviceID Error: ' + e.Message);
end; try
Memo1.Lines.Add('Processor ID: ' + GetWMIProperty('Processor', 'ProcessorId'));
except on e: exception do
Memo1.Lines.Add('Processor ID Error: ' + e.Message);
end;
end;procedure TForm1.Button2Click(Sender: TObject);
var
oEnum: IEnumvariant;
Item: OLEVariant;
iValue: LongWord;
begin
oEnum := GetWMIClass('Win32_NetworkAdapterConfiguration where IPEnabled=True');
while (oEnum.Next(1, Item, iValue) = 0) do
begin
Memo1.Lines.Add('MacAddress:' + VarToStr(Item.MACAddress));
end;
end;procedure TForm1.Button3Click(Sender: TObject);
begin
Memo1.Lines.Add(GetIdeDiskSerialNumber);
end;end.