如何获取电脑的CPU温度

jyh_baoding 2010-09-26 04:49:52
在BIOS中有连续的温度显示,但程序如何提取这样的信息,在网上查了下也没有有价值的东西,有知道的高人给些指点
...全文
814 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
herostarone 2010-09-29
  • 打赏
  • 举报
回复
你去网上下到我说的那几个驱动了吗,放在工程下要,不行我给你传过去

[Quote=引用 13 楼 jyh_baoding 的回复:]
谢谢大家,问题仍没有解决
[/Quote]
jyh_baoding 2010-09-29
  • 打赏
  • 举报
回复
谢谢大家,问题仍没有解决
Eleven 2010-09-29
  • 打赏
  • 举报
回复
http://www.hackchina.com/cont/144173
希望这个对你有用。。。
c271525290 2010-09-29
  • 打赏
  • 举报
回复
学习了。。。
大V雪 2010-09-29
  • 打赏
  • 举报
回复
友情帮顶!!!
hurryboylqs 2010-09-29
  • 打赏
  • 举报
回复
jyh_baoding 2010-09-29
  • 打赏
  • 举报
回复
结果都是 0XFFFFFFFF
jyh_baoding 2010-09-29
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 herostarone 的回复:]

你去网上下到我说的那几个驱动了吗,放在工程下要,不行我给你传过去

引用 13 楼 jyh_baoding 的回复:
谢谢大家,问题仍没有解决
[/Quote]
按你说的试了,取出的结果4294967295这肯定不对,有别的办法吗
chenyu2202863 2010-09-28
  • 打赏
  • 举报
回复
需要设备驱动程序的配合,WMI才能保证取到
yuchongjike 2010-09-28
  • 打赏
  • 举报
回复
1.看一下主板的HWM是由谁负责的,一般有两种:IO控制和BIOS控制.
2.即然楼主知道温度在BIOS中的位置了,那就直接用WinIO直接访问内存地址读出来就行了.
xengine-qyt 2010-09-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 pshchao 的回复:]
http://topic.csdn.net/u/20090907/16/3f7ea3a7-ac50-455b-a5a4-50b567b7bf77.html
第26楼
[/Quote]

这方法已经过时了。

只有通过驱动操作得到吧
herostarone 2010-09-27
  • 打赏
  • 举报
回复
这个我还真做过,不过我们公司的传感器是万邦的,当时写了个总结,给你copy过来,看看啊:

今天终于把cpu的温度和主板的温度读了出来,总结一下:

1.首先CPU的IO口是不能直接访问的,必须通过WinIo来访问cpu的IO口,步骤如下:

Place winio.dll, winio.vxd and winio.sys in the directory where your application's executable file resides.
Add winio.lib to your project file by right clicking on the project name in the Visual C++ workview pane and selecting "Add Files to Project...".
Add the #include "winio.h" statement to your source file.
Call InitializeWinIo.
Call the library's functions to access I/O ports and physical memory.
Call ShutdownWinIo.
2.我是从主板的传感器读,我们公司的传感器是WinBord,也就是万邦,所以需要找到次芯片的datasheet,找到传感器中寄存器的记录温度的地址。其实cpu的端口是访问surper io的,也就是万邦这个芯片吧(理解的不知道对不)。

bool bRet = InitializeWinIo();
if (!bRet)
{
KillTimer(time1);
MessageBox(_T("please copy the WINIO.VXD,WinIo.dll,WinIo.sys to the forder where the .exe exist"),_T("ERRor"));
DestroyWindow();
return;
}
DWORD CPUTemperature=0;
DWORD MainboardTemperature=0;
DWORD CPUTemperature1,CPUTemperature2;
CString str;

SetPortVal(0x2E,0x87,1);//在读superio上的winbond的温控
SetPortVal(0x2E,0x87,1);

SetPortVal(0x295,0x48,1);
SetPortVal(0x295,0x27,1);//主板温度
GetPortVal(0x296,&MainboardTemperature,1);

SetPortVal(0x295,0x4E,1);//bank select
SetPortVal(0x296,0x81,1);
SetPortVal(0x295,0x50,1);
GetPortVal(0x296,&CPUTemperature1,1);
SetPortVal(0x295,0x51,1);
GetPortVal(0x296,&CPUTemperature2,1);
CPUTemperature=(CPUTemperature1<<1)|((CPUTemperature2>>7)&0x01);

SetPortVal(0x2E,0xAA,1);

cpu_t.Format(_T("%u ℃"),CPUTemperature/2);
maiboard_t.Format(_T("%u ℃"),MainboardTemperature);
UpdateData(FALSE);
ShutdownWinIo();

温度是显示出来了,可我们公司CPU的传感器到底是什么牌的没有资料直接写出,但肯定应该是winbond,要不然怎么可以显示呢,不过明天还是打电话问问abore,还有就是我测试的时候开始超级兔子与鲁大师进行比较,但是开着他们的时候,CPU的温度偶尔会出现oxffffffff的值,我才可能是和超级兔子或鲁大师冲突了,关闭了就好了。

swlilike 2010-09-27
  • 打赏
  • 举报
回复
我也想知道怎么弄
LuciferStar 2010-09-27
  • 打赏
  • 举报
回复
WMI会比较慢。
信阳毛尖 2010-09-27
  • 打赏
  • 举报
回复
这个话题接触硬件,含金量应该比较高啊,帮lz置顶一下帖子..
fantasy_chl 2010-09-26
  • 打赏
  • 举报
回复
友情帮顶,mark
tigerMayDo 2010-09-26
  • 打赏
  • 举报
回复
友情帮顶!!!
大V雪 2010-09-26
  • 打赏
  • 举报
回复
友情帮顶!!!
pshchao 2010-09-26
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20090907/16/3f7ea3a7-ac50-455b-a5a4-50b567b7bf77.html
第26楼

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧