请问如何通过调用api函数来测试cpu温度?是不是没有这方面的api函数,不可能知道cpu的温度?
解决方案 »
- 有谁知道哪款国外知名的多媒体软件是用Delphi做的界面?急!!!(100分)
- 一个大数据量查询问题。急!!!
- 欢迎加入DELPHI+SQL2000的QQ群,大家一起学习进步!第三方控件
- 请高手帮忙呀......dll的问题,我已经放上去好久了,为什么没人帮忙解这个问题呢?
- 新手提问! 如何判断编号是否在表中已存在
- 求求最大值的SQL语句!!!
- >>>>>>关于数据库开发中日文乱码的问题?高手请指教<<<<<<<<<
- 100分求教!CPU序列号是否唯一?怎样读取?
- 在WIN2K(SP2)+D6+ORACLE8I2环境下,用SOCKET SERVER为何总报STACK OVER FLOW错误?
- delphi&Sybase
- 怎么让ComboBox在运行时移动啊?
- 能否用两个MSComm控件来监听同一个串口,
下面这段代码可以试试,需要MBM控件包的支持!
type
TBus = (ISA, SMBus, VIA686ABus, DirectIO);
TSMB = (SMBIntel, SMBAMD, SMBALi);
type
TSharedData = Record
STemperature : array [1..10] of Integer;
SVoltage : array [1..10] of Real;
SFan : array [1..10] of Integer;
SMHZ : Integer;
SNrCPU : Byte;
SCPUUsage : array [1..4] of Real;
end;
TSharedInfo = Record
SMBM_Version : array [0..10] of Char;
SSMB_Base : Word;
SSMB_Type : TBus;
SSMB_Code : TSMB;
SSMB_Addr : Byte;
SSMB_Name : array [0..40] of Char;
SISA_Base : Word;
SChipType : Integer;
SVoltageSubType : Byte;
end;
TSharedHL = Record
STempC : array [1..10] of LongInt;
STempA : array [1..10] of Extended;
STempL : array [1..10] of Real;
STempH : array [1..10] of Real;
SVoltC : array [1..10] of LongInt;
SVoltA : array [1..10] of Extended;
SVoltL : array [1..10] of Real;
SVoltH : array [1..10] of Real;
SFanC : array [1..10] of LongInt;
SFanA : array [1..10] of Extended;
SFanL : array [1..10] of Real;
SFanH : array [1..10] of Real;
SStart : array [0..40] of Char;
SCurrent : array [0..40] of Char;
SCPUC : array [1..4] of LongInt;
SCPUA : array [1..4] of Extended;
SCPUL : array [1..4] of Real;
SCPUH : array [1..4] of Real;
end;
TSharedName = Record
STempName : array [1..10] of array [0..10] of Char;
SVoltName : array [1..10] of array [0..10] of Char;
SFanName : array [1..10] of array [0..10] of Char;
SCPUName : array [0..10] of Char;
SCPUUSageName : array [0..10] of Char;
end;
PSharedData = ^TSharedData;
PSharedInfo = ^TSharedInfo;
PSharedHL = ^TSharedHL;
PSharedName = ^TSharedName;
var
CPUMhz : Integer;
CPUNr : Byte;
Temperature : array [1..10] of Integer
Voltage : array [1..10] of Real;
Fan : array [1..10] of Integer;
CPU : array [1..4] of Real;
UsedBus : TBus;
IsaBase : Word;
SMB_BASE : Word;
SMBusType : TSMB;
SMB_NAME : String;
SMBChipAddress : Byte;
ChipType : Integer;
TempL : array[1..10] of Real;
TempH : array[1..10] of Real;
TempA : array[1..10] of Extended;
TempC : array[1..10] of LongInt;
VoltL : array[1..10] of Real;
VoltH : array[1..10] of Real;
VoltA : array[1..10] of Extended;
VoltC : array[1..10] of LongInt;
FanL : array[1..10] of Real;
FanH : array[1..10] of Real;
FanA : array[1..10] of Extended;
FanC : array[1..10] of LongInt;
StartingTimeLog : String;
CurrentTimeLog : String;
CPUL : array[1..4] of Real;
CPUH : array[1..4] of Real;
CPUA : array[1..4] of Extended;
CPUC : array[1..4] of LongInt;
TempName : array[1..10] of String;
VoltName : array[1..10] of String;
FanName : array[1..10] of String;
CPUName : String;
CPUUsageName : String;
function ReadSharedData : Boolean;
function ReadSharedInfo : Boolean;
function ReadSharedHL : Boolean;
function ReadSharedName : Boolean;
implementation
function ReadSharedData : Boolean;
var
PSH : PSharedData;
hSData : Integer;
X : Integer;
begin
Result:=False;
hSData:=OpenFileMapping(FILE_MAP_READ, False, '$M$B$M$5$D$');
if hSData=0 then Exit;
PSH:=MapViewOfFile(hSData, FILE_MAP_READ, 0, 0, 0);
if PSH=Nil then
begin
CloseHandle(hSData);
Exit;
end;
with PSH^ do
begin
for X:=1 to 10 do Temperature[X]:=STemperature[X];
for X:=1 to 10 do Voltage[X]:=SVoltage[X];
for X:=1 to 10 do Fan[X]:=SFan[X];
CPUMHZ:=SMHZ;
CPUNr:=SNrCPU;
for X:=1 to 4 do CPU[X]:=SCPU[X];
end;
UnMapViewOfFile(PSH);
CloseHandle(hSData);
Result:=True;
end;
function ReadSharedInfo : Boolean;
var
PSH : PSharedInfo;
hSInfo : Integer;
begin
Result:=False;
hSInfo:=OpenFileMapping(FILE_MAP_READ, False, '$M$B$M$5$I$');
if hSInfo=0 then Exit;
PSH:=MapViewOfFile(hSInfo, FILE_MAP_READ, 0, 0, 0);
if PSH=Nil then
begin
CloseHandle(hSInfo);
Exit;
end;
with PSH^ do
begin
SMB_Base:=SSMB_Base;
UsedBus:=SSMB_Type;
SmbusType:=SSMB_Code;
SMBChipAddress:=SSMB_Addr;
SMB_Name:=StrPas(SSMB_Name);
ISABase:=SISA_Base;
ChipType:=SChipType;
VoltageSubType:=SVoltageSubType;
end;
UnMapViewOfFile(PSH);
CloseHandle(hSInfo);
Result:=True;
end;
function ReadSharedHL : Boolean;
var
PSH : PSharedHL;
hSHL : Integer;
X : Integer;
begin
Result:=False;
hSHL:=OpenFileMapping(FILE_MAP_READ, False, '$M$B$M$5$H$');
if hSHL =0 then Exit;
PSH:=MapViewOfFile(hSHL, FILE_MAP_READ, 0, 0, 0);
if PSH=Nil then
begin
CloseHandle(hSHL);
Exit;
end;
with PSH^ do
begin
for X:=1 to 10 do
begin
TempL[X]:=STempL[X];
TempH[X]:=STempH[X];
TempA[X]:=STempA[X];
TempC[X]:=STempC[X];
end;
for X:=1 to 10 do
begin
VoltL[X]:=SVoltL[X];
VoltH[X]:=SVoltH[X];
VoltA[X]:=SVoltA[X];
VoltC[X]:=SVoltC[X];
end;
for X:=1 to 10 do
begin
FanL[X]:=SFanL[X];
FanH[X]:=SFanH[X];
FanA[X]:=SFanA[X];
FanC[X]:=SFanC[X];
end;
StartingTimeLog:=StrPas(SStart);
CurrentTimeLog:=StrPas(SCurrent);
for X:=1 to 4 do
begin
CPUL[X]:=SCPUL[X];
CPUH[X]:=SCPUH[X];
CPUA[X]:=SCPUA[X];
CPUC[X]:=SCPUC[X];
end;
end;
UnMapViewOfFile(PSH);
CloseHandle(hSHL);
Result:=True;
end;
function ReadSharedName : Boolean;
var
PSH : PSharedName;
hSData : Integer;
X : Integer;
begin
Result:=False;
hSData:=OpenFileMapping(FILE_MAP_READ, False, '$M$B$M$5$N$');
if hSData=0 then Exit;
PSH:=MapViewOfFile(hSData, FILE_MAP_READ, 0, 0, 0);
if PSH=Nil then
begin
CloseHandle(hSData);
Exit;
end;
with PSH^ do
begin
for X:=1 to 10 do TempName[X]:=StrPas(STempName[X])
for X:=1 to 10 do VoltName[X]:=StrPas(VoltName[X])
for X:=1 to 10 do FanName[X]:=StrPas(FanName[X])
CPUName:=StrPas(SCPUName);
CPUUsageName:=StrPas(SCPUName);
end;
UnMapViewOfFile(PSH);
CloseHandle(hSData);
Result:=True;
end;
到ASM板问问应该有人知道
这和主板有关系,,,和BIOS有关系,看来得用ASM读端口了,