tonboです。お世話になります。
プロセッサの温度を測りたく、Webを参照し以下のコードを試しました。
(Formにボタン1つを配置)
while内が実行されません。
躓いており間違いをご指摘頂ければ幸いです。
--------------------------------------
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, WbemScripting_TLB;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private }
public
function GetWMIstring2 (wmiHost, wmiClass, wmiProperty : string):string;
end;
var
Form1: TForm1;
implementation
uses ComObj, ActiveX;
{$R *.dfm}
function TForm1.GetWMIstring2 (wmiHost, wmiClass, wmiProperty : string):string;
var
Locator: ISWbemLocator;
Services: ISWbemServices;
SObject: ISWbemObject;
ObjSet: ISWbemObjectSet;
SProp: ISWbemProperty;
Enum: IEnumVariant;
Value: Cardinal;
TempObj: OleVariant;
SN: string;
begin
try
Locator := CoSWbemLocator.Create;
Services := Locator.ConnectServer(wmiHost, 'root\wmi', '', '', '','', 0, nil);
ObjSet := Services.ExecQuery('SELECT * FROM '+ wmiClass, 'WQL', wbemFlagReturnImmediately or wbemFlagForwardOnly , nil);
Enum := (ObjSet._NewEnum) as IEnumVariant;
while (Enum.Next(1, TempObj, Value) = S_OK) do //ここから
begin
SObject := IUnknown(tempObj) as ISWBemObject;
SProp := SObject.Properties_.Item(wmiProperty, 0);
if VarIsNull(SProp.Get_Value) then
result := ''
else
begin
SN := SProp.Get_Value;
result := SN;
end;
end;
except
on exception do
result := '';
end;
end; //ここへ飛ぶ
procedure TForm1.Button1Click(Sender: TObject);
var tmpstr : string; cputemp : Integer;
begin
tmpstr := getWMIstring2('','MSAcpi_ThermalZoneTemperature','CurrentTemperature');
if tmpstr <> '' then
Begin
cputemp:= (StrToInt(tmpstr) - 2732) div 10;
form1.caption := IntToStr(cputemp) + ' °C'
end else
form1.Caption := 'ERROR';
end;
end.
--------------------------------------
【補足】
・オリジナルのコード
http://www.delphipraxis.net/97383-notebook-temperature-2.html
・環境:Windows 7 32bit/64bit、Delphi 7/XE7/XE8 同じ結果です。
・WbemScripting_TLB の作成は、
KENCHさんの「Delphi de WMI」
http://homepage3.nifty.com/KENCH/open/wmi/delphi_wmi.htm
Mr.XRAYさんの「898_WMI イントロダクション」
http://mrxray.on.coocan.jp/Delphi/plSamples/898_WMI_Introduction.htm
を参考にしました。ありがとうございます。
MLホームページ:
http://www.freeml.com/delphi-users
----------------------------------------------------------------------
☆*:・★☆。.:*:・★*:.。:* ・☆。.:*:・★.‥∴★¨∴
突然の来客、急な出張、勝負の合コン、結婚式、飲み会、
デート、同窓会・・・
まいった!まさに今!急な出費に備えての1枚!
http://ad.freeml.com/cgi-bin/sa.cgi?id=mH76N
☆*:・★☆。.:*:・★*:.。:* ・☆。.:*:・★.‥∴★¨∴
------------------------------------------------------[freeml byGMO]--