读书人

delphi 引述 wmi 成员(方法)

发布时间: 2012-08-17 02:08:34 作者: rapoo

delphi 引用 wmi 成员(方法)
例如 root\CIMV2 里 Select * From Win32_OperatingSystem 里的方法 ShutDown


如何引用。

[解决办法]
错了
using System;
using System.Management;
using System.Windows.Forms;

namespace WMISample
{
public class CallWMIMethod
{
public static void Main()
{
try
{
ManagementObject classInstance =
new ManagementObject("root\\CIMV2",
"Win32_OperatingSystem.ReplaceKeyPropery='ReplaceKeyPropertyValue'",
null);

// no method in-parameters to define


// Execute the method and obtain the return values.
ManagementBaseObject outParams =
classInstance.InvokeMethod("Shutdown", null, null);

// List outParams
Console.WriteLine("Out parameters:");
Console.WriteLine("ReturnValue: " + outParams["ReturnValue"]);
}
catch(ManagementException err)
{
MessageBox.Show("An error occurred while trying to execute the WMI method: " + err.Message);
}
}
}
}
[解决办法]

Delphi(Pascal) code
 function GetPNPDeviceID():AnsiString;  var    Locator: OleVariant;    WMI: OleVariant;    RET: OleVariant;    Enum: IEnumVariant;    Tmp: OleVariant;    Value: Cardinal;  begin    result:='';    Locator := CreateOleObject('WbemScripting.SWbemLocator');    WMI := Locator.ConnectServer('.', '', '', '');    Ret := WMI.ExecQuery('SELECT * FROM Win32_USBHub');//这里Win32_USBHub为检测项,详见下表    Enum:= IUnknown(RET._NewEnum) as IEnumVariant;    while (Enum.Next(1, Tmp, Value) = S_OK) do    begin      if Tmp.Name='USB Mass Storage Device' then      begin         //ShowMessage('这个u盘的硬件特征码是'+Tmp.PNPDeviceID);//Tmp为检测到返回的数据集合,其中PNPDeviceID为集合中的对象,包含了PID和VID码         result:=result+Tmp.PNPDeviceID;      end;    end;  end; 

读书人网 >.NET

热点推荐