Untuk membuat program yang bisa digunakan untuk mendeteksi temperature PC cukup menggunakan WMI classes Win32_TemperatureProbe danWin32_Fan, caranya adalah :
Import Microsoft WMIScripting V1.x library
Import Microsoft WMIScripting V1.x library
Component->Import Component->Import type library->Next->"Select the library"->Next->Add unit to project->Finish.
Contoh Code
program GetWMI_Info;
{$APPTYPE CONSOLE}
uses
ActiveX,
Variants,
SysUtils,
WbemScripting_TLB in '..\..\..\Documents\RAD Studio\5.0\Imports\WbemScripting_TLB.pas';
procedure ShowTemperatureInfo();
var
WMIServices: ISWbemServices;
Root : ISWbemObjectSet;
Item : Variant;
I : Integer;
begin
{
http://msdn.microsoft.com/en-us/library/aa394493%28VS.85%29.aspx
The Win32_TemperatureProbe WMI class represents the properties of a temperature sensor (electronic thermometer).
Most of the information that the Win32_TemperatureProbe WMI class provides comes from SMBIOS.
Real-time readings for the CurrentReading property cannot be extracted from SMBIOS tables.
For this reason, current implementations of WMI do not populate the CurrentReading property.
The CurrentReading property's presence is reserved for future use.
}
Writeln('Temperature Info');
Writeln('----------------');
WMIServices := CoSWbemLocator.Create.ConnectServer('.', 'root\cimv2','', '', '', '', 0, nil);
Root := WMIServices.ExecQuery('Select * FROM Win32_TemperatureProbe','WQL', 0, nil);
for I := 0 to Root.Count - 1 do
begin
Item := Root.ItemIndex(I);
Writeln('Accuracy '+VarToStr(Item.Accuracy));
Writeln('Availability '+VarToStr(Item.Availability));
Writeln('Caption '+Item.Caption);
Writeln('Config Manager Error Code '+VarToStr(Item.ConfigManagerErrorCode));
Writeln('Config Manager User Config '+VarToStr(Item.ConfigManagerUserConfig));
Writeln('Creation Class Name '+VarToStr(Item.CreationClassName));
Writeln('Current Reading '+VarToStr(Item.CurrentReading));
Writeln('Description '+VarToStr(Item.Description));
Writeln('Device ID '+VarToStr(Item.DeviceID));
Writeln('Error Cleared '+VarToStr(Item.ErrorCleared ));
Writeln('Error Description '+VarToStr(Item.ErrorDescription));
Writeln('Install Date '+VarToStr(Item.InstallDate));
Writeln('Is Linear '+VarToStr(Item.IsLinear));
Writeln('Last Error Code '+VarToStr(Item.LastErrorCode));
Writeln('Lower Threshold Critical '+VarToStr(Item.LowerThresholdCritical));
Writeln('Lower Threshold Fatal '+VarToStr(Item.LowerThresholdFatal));
Writeln('Lower Threshold NonCritical '+VarToStr(Item.LowerThresholdNonCritical));
Writeln('Max Readable '+VarToStr(Item.MaxReadable));
Writeln('Min Readable '+VarToStr(Item.MinReadable));
Writeln('Name '+VarToStr(Item.Name));
Writeln('Nominal Reading '+VarToStr(Item.NominalReading));
Writeln('Normal Max '+VarToStr(Item.NormalMax));
Writeln('Normal Min '+VarToStr(Item.NormalMin ));
Writeln('PNP Device ID '+VarToStr(Item.PNPDeviceID));
Writeln('Power Management Capabilities '+VarToStr(Item.PowerManagementCapabilities));
Writeln('Power Management Supported '+VarToStr(Item.PowerManagementSupported));
Writeln('Resolution '+VarToStr(Item.Resolution));
Writeln('Status '+VarToStr(Item.Status));
Writeln('Status Info '+VarToStr(Item.StatusInfo));
Writeln('System Creation Class Name '+VarToStr(Item.SystemCreationClassName));
Writeln('System Name '+VarToStr(Item.SystemName));
Writeln('Tolerance '+VarToStr(Item.Tolerance));
Writeln('Upper Threshold Critical '+VarToStr(Item.UpperThresholdCritical));
Writeln('Upper Threshold Fatal '+VarToStr(Item.UpperThresholdFatal));
Writeln('Upper Threshold NonCritical '+VarToStr(Item.UpperThresholdNonCritical));
Writeln('');
end;
end;
procedure ShowCPUFanInfo();
var
WMIServices: ISWbemServices;
Root : ISWbemObjectSet;
Item : Variant;
I : Integer;
begin
{
http://msdn.microsoft.com/en-us/library/aa394146%28VS.85%29.aspx
The Win32_Fan WMI class represents the properties of a fan device in the computer system. For example, the CPU cooling fan.
}
Writeln('CPU FAN Info');
Writeln('----------------');
WMIServices := CoSWbemLocator.Create.ConnectServer('.', 'root\cimv2','', '', '', '', 0, nil);
Root := WMIServices.ExecQuery('Select * FROM Win32_Fan','WQL', 0, nil);
for I := 0 to Root.Count - 1 do
begin
Item := Root.ItemIndex(I);
Writeln('ActiveCooling '+VarToStr(Item.ActiveCooling));
Writeln('Availability '+VarToStr(Item.Availability));
Writeln('Caption '+VarToStr(Item.Caption));
Writeln('Config Manager ErrorCode '+VarToStr(Item.ConfigManagerErrorCode));
Writeln('Config Manager UserConfig '+VarToStr(Item.ConfigManagerUserConfig));
Writeln('Creation ClassName '+VarToStr(Item.CreationClassName));
Writeln('Description '+VarToStr(Item.Description));
Writeln('DesiredSpeed '+VarToStr(Item.DesiredSpeed));
Writeln('DeviceID '+VarToStr(Item.DeviceID));
Writeln('ErrorCleared '+VarToStr(Item.ErrorCleared));
Writeln('ErrorDescription '+VarToStr(Item.ErrorDescription));
Writeln('InstallDate '+VarToStr(Item.InstallDate));
Writeln('LastErrorCode '+VarToStr(Item.LastErrorCode));
Writeln('Name '+VarToStr(Item.Name));
Writeln('PNPDeviceID '+VarToStr(Item.PNPDeviceID));
Writeln('PowerManagement Capabilities '+VarToStr(Item.PowerManagementCapabilities));
Writeln('PowerManagement Supported '+VarToStr(Item.PowerManagementSupported));
Writeln('Status '+VarToStr(Item.Status));
Writeln('StatusInfo '+VarToStr(Item.StatusInfo));
Writeln('SystemCreation ClassName '+VarToStr(Item.SystemCreationClassName));
Writeln('SystemName '+VarToStr(Item.SystemName));
Writeln('VariableSpeed '+VarToStr(Item.VariableSpeed));
Writeln('');
end;
End;
begin
try
CoInitialize(nil);
ShowTemperatureInfo();
ShowCPUFanInfo();
Readln;
CoUninitialize;
except
on E:Exception do
Begin
CoUninitialize;
Writeln(E.Classname, ': ', E.Message);
Readln;
End;
end;
end.
Jangan Asal copy paste mas, lalu menambahkan yang anda tidak tahu,
BalasHapusitu di kode dijelaskan {$APPTYPE CONSOLE} bukan interface,
jngan pasang gambar kya gitu, meipu itu namanya
ngacok ini jelas2 rad studio mana jalan itu indexnya di D7
BalasHapus