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;