起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 169|回复: 6

【搞定】在justep中使用wmi?**

[复制链接]
发表于 2007-12-23 17:29:19 | 显示全部楼层 |阅读模式
需要获得本机的硬件信息,用wmi实现比较方便。
写了一段代码但是执行到Enum := IUnknown(Helper3.PropertyGet('_NewEnum',[])) as IEnumVariant;时报:不能转换这种类型。
单独执行Helper3.PropertyGet('_NewEnum',[])也是报一样的错。
代码如下:
function TUSBKEY.GetCpuId : string;
var
  Locator: OleVariant;
  Helper : System.DispatchHelper;
  Helper2 : System.DispatchHelper;
  Helper3 : System.DispatchHelper;
  Helper4 : System.DispatchHelper;
  WMI: OleVariant;
  RET: OleVariant;
  Enum: IEnumVariant;
  Tmp: OleVariant;
  Value: Cardinal;
  obj: TObject;
  str : string;
begin
    Locator := ComObj.CreateOleObject('WbemScripting.SWbemLocator');
    Helper := System.DispatchHelper.Create(Locator);

    WMI := Helper.InvokeMethod('ConnectServer',['.','','','','']);
    Helper2 := System.DispatchHelper.Create(WMI);

    Ret := Helper2.InvokeMethod('ExecQuery',['SELECT * FROM Win32_Processor']);
    Helper3 := System.DispatchHelper.Create(Ret);

    Enum := IUnknown(Helper3.PropertyGet('_NewEnum',[])) as IEnumVariant;

    while (Enum.Next(1, Tmp, Value) = System_.S_OK) do
    begin
      Helper4 :=  System.DispatchHelper.Create(Tmp);
      str := Helper4.PropertyGet('ProcessorId',[str]).ToString();
      Result := str;
    end;
end;
回复

使用道具 举报

发表于 2007-12-24 11:21:11 | 显示全部楼层
你把这个函数在Delphi里包装成好导入到平台使用吧
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-12-24 13:03:52 | 显示全部楼层
导入时发生:Runtime error 217 at 0049433A,是什么问题?
回复 支持 反对

使用道具 举报

发表于 2007-12-24 13:07:48 | 显示全部楼层
屏幕截图给我看看
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-12-24 13:31:11 | 显示全部楼层
截屏:

jp.jpg

65.72 KB, 下载次数: 89

回复 支持 反对

使用道具 举报

发表于 2007-12-24 14:00:25 | 显示全部楼层
Importer所在的目录中不能存在空格,如: C:\Program Files\Justep\Importer目录不可以,应该把Importer放到C:\Justep\Importer目录中。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-12-24 15:36:12 | 显示全部楼层
非常感谢Justep Admin,可以结贴了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-5 04:39 , Processed in 0.041345 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表