Thema: Delphi CPU Temperatur Auslesen

Einzelnen Beitrag anzeigen

Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#19

Re: CPU Temperatur Auslesen

  Alt 2. Apr 2007, 20:41
Hi,

die Export Tabelle deiner Dll sieht nicht gerade erfolgsversprechend aus:

ASIO_Close
ASIO_GetCpuID
ASIO_InPortB
ASIO_InPortD
ASIO_MapMem
ASIO_Open
ASIO_OutPortB
ASIO_OutPortD
ASIO_ReadMSR
ASIO_UnmapMem
ASIO_WriteMSR
OC_GetCurrentCpuFrequency

Was bei Asus Asus Probe ist, ist bei Gigabyte das Tool SIV (System Information Viewer). Das Tool hatte Gigabyte mit auf die Treiber CD des Mainboards gelegt, dort lagen auch 2 Dll's bei, die eine hatte folgende Export Tabelle:

LX_Get_CPUFanCount
LX_Get_CPUTempValue
LX_Get_SystemFanValue
LX_Get_VoltageCPUValue
LX_Get_VoltageP12Value
LX_Get_VoltageP33Value
LX_Get_VoltageP5Value

Auch wenn Corpsman das nicht viel nutzen wird, aber mit folgender Funktion konnte ich ohne weiteres die CPU Temperatur und auch den Rest auslesen:

Delphi-Quellcode:
function GetCpuTemp: cardinal;
type
  LX_Get_CPUTempValue = function(pCpuTemp: Pointer): cardinal stdcall;
var
  hInstDll: THandle;
  Get_CPUTempValue: LX_Get_CPUTempValue;
  Pfad: AnsiString;
begin
  Result := 0;
  Pfad := ExtractFilePath(application.ExeName) + 'w83781d.dll';
  if FileExists(Pfad) then
  begin
    hInstDll := LoadLibrary(PChar(Pfad));
    if hInstDll <> 0 then
    try
      Get_CPUTempValue:= GetProcAddress(hInstDll, 'LX_Get_CPUTempValue');
      if Assigned(Get_CPUTempValue) then
        Get_CPUTempValue(Addr(Result));
    finally
      FreeLibrary(hInstDll);
    end;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  form1.caption:= inttostr(GetCpuTemp);
end;
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat