求如何获取cpu温度

chinacoding 2010-08-10 04:52:10
vc代码
完成代码能够执行。
可以考虑WMI 实现,但是必须有实现代码(50分+)
考虑到WMI不稳定,提供硬件内存读取的方式的 可以给更高的分(100分+)

想回答的人 就不要提主板不支持等说法了,这个我都知道
假定主板都支持,分不够再加
...全文
1073 17 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
sichuanwww 2010-08-24
  • 打赏
  • 举报
回复
VC.NET也属于.net区问
job82824 2010-08-23
  • 打赏
  • 举报
回复
只知道开机进bios,里面获取的温度值才是真实的
  • 打赏
  • 举报
回复
自己买个传感器。
crackdung 2010-08-18
  • 打赏
  • 举报
回复
这个组件能很好地帮助你。


网站




my blog
http://ufo-crackerx.blog.163.com/
porschev 2010-08-13
  • 打赏
  • 举报
回复
VC你怎么就突发其想在.net区问
一克代码 2010-08-13
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 ly_longyue 的回复:]
C# code
private void getCpu()
{
timer1.Enabled = true;
try
{




System.Management.ManagementScope ms = new System.Managem……
[/Quote]

我改了vb的楼主看看!


Private Sub getCpu()
timer1.Enabled = True
Try




Dim ms As New System.Management.ManagementScope("\\" & stringMachineName & "\root\cimv2", co)
'本地
treeView1.Nodes.Clear()

oq = New System.Management.ObjectQuery("SELECT * FROM Win32_processor")
query = New ManagementObjectSearcher(ms, oq)
queryCollection = query.[Get]()


nodeCollection = createParentNode("CPU信息", treeView1, 7)

For Each mo As ManagementObject In queryCollection

createChildNode(nodeCollection, "★型号: " + mo("Name").ToString().Trim(), 7)
createChildNode(nodeCollection, "制造商: " + mo("Manufacturer"), 3)
createChildNode(nodeCollection, "类型: " + mo("Caption"), 3)
createChildNode(nodeCollection, "地址位宽: " + mo("AddressWidth") & "KB", 3)
createChildNode(nodeCollection, "数据位宽: " + mo("DataWidth") & "KB", 3)
createChildNode(nodeCollection, "最大频率: " + formatSpeed(Int64.Parse(mo("MaxClockSpeed").ToString())), 3)
createChildNode(nodeCollection, "2级缓存: " + mo("L2CacheSize").ToString() & " KB", 3)

createChildNode(nodeCollection, "CPU插槽: " + mo("SocketDesignation"), 3)
' createChildNode(nodeCollection, "1111: " + mo["PNPDeviceID"]);
createChildNode(nodeCollection, "描述: " + mo("Version"), 3)
Next


Dim vManagementObjectSearcher As New ManagementObjectSearcher("root\WMI", "select * from MSAcpi_ThermalZoneTemperature")
For Each managementObject As ManagementObject In vManagementObjectSearcher.[Get]()
createChildNode(nodeCollection, "CPU温度: " & (Convert.ToDouble(managementObject("CurrentTemperature")) - 2732) / 10.0 & "°C", 3)
Next

If treeView1.Nodes(0).Nodes(9).Text.Trim() = "" Then
oq = New System.Management.ObjectQuery("SELECT * FROM Win32_TemperatureProbe")
query = New ManagementObjectSearcher(ms, oq)
queryCollection = query.[Get]()

For Each mo As ManagementObject In queryCollection

createChildNode(nodeCollection, "CPU温度: " + mo("CurrentReading"), 3)
Next
Else
End If







Me.Update()
Catch e As Exception
MessageBox.Show("Error: " & e)
End Try

Me.Update()


treeView1.ExpandAll()


End Sub

chinacoding 2010-08-12
  • 打赏
  • 举报
回复
我还想用手去摸呢,开玩笑呢不是
teddy000 2010-08-12
  • 打赏
  • 举报
回复
拆下来量量!
wujinjian2008n 2010-08-12
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 ly_longyue 的回复:]

C# code
private void getCpu()
{
timer1.Enabled = true;
try
{




System.Management.ManagementScope ms = new System.Management.Mana……
[/Quote]

定时去获不行吗??
chinacoding 2010-08-12
  • 打赏
  • 举报
回复
自己顶以下
那个pudu网站真恶心。
无法下载资源
龍月 2010-08-11
  • 打赏
  • 举报
回复
代码是相通的啊!!!!!

WMI 的这个 Win32_processor 就是获取 cpu的 信息的
你 改成 VC 不就行了???
chinacoding 2010-08-10
  • 打赏
  • 举报
回复
我要的是vc代码 你你这个没用
龍月 2010-08-10
  • 打赏
  • 举报
回复
        private void getCpu()
{
timer1.Enabled = true;
try
{




System.Management.ManagementScope ms = new System.Management.ManagementScope("\\\\" + stringMachineName + "\\root\\cimv2", co);//本地

treeView1.Nodes.Clear();

oq = new System.Management.ObjectQuery("SELECT * FROM Win32_processor");
query = new ManagementObjectSearcher(ms, oq);
queryCollection = query.Get();


nodeCollection = createParentNode("CPU信息",treeView1,7);

foreach (ManagementObject mo in queryCollection)
{

createChildNode(nodeCollection, "★型号: " + mo["Name"].ToString().Trim(),7);
createChildNode(nodeCollection, "制造商: " + mo["Manufacturer"],3);
createChildNode(nodeCollection, "类型: " + mo["Caption"], 3);
createChildNode(nodeCollection, "地址位宽: " + mo["AddressWidth"] + "KB", 3);
createChildNode(nodeCollection, "数据位宽: " + mo["DataWidth"] + "KB", 3);
createChildNode(nodeCollection, "最大频率: " + formatSpeed(Int64.Parse(mo["MaxClockSpeed"].ToString())), 3);
createChildNode(nodeCollection, "2级缓存: " + mo["L2CacheSize"].ToString() + " KB", 3);

createChildNode(nodeCollection, "CPU插槽: " + mo["SocketDesignation"], 3);
createChildNode(nodeCollection, "描述: " + mo["Version"], 3);
// createChildNode(nodeCollection, "1111: " + mo["PNPDeviceID"]);
}


ManagementObjectSearcher vManagementObjectSearcher = new ManagementObjectSearcher(@"root\WMI", @"select * from MSAcpi_ThermalZoneTemperature");
foreach (ManagementObject managementObject in vManagementObjectSearcher.Get())
{
createChildNode(nodeCollection, "CPU温度: " + (Convert.ToDouble(managementObject["CurrentTemperature"]) - 2732) / 10.0 + "°C",3);
}

if (treeView1.Nodes[0].Nodes[9].Text.Trim() == "")
{
oq = new System.Management.ObjectQuery("SELECT * FROM Win32_TemperatureProbe");
query = new ManagementObjectSearcher(ms, oq);
queryCollection = query.Get();

foreach (ManagementObject mo in queryCollection)
{

createChildNode(nodeCollection, "CPU温度: " + mo["CurrentReading"], 3);
}
}
else
{ }


this.Update();





}
catch (Exception e)
{
MessageBox.Show("Error: " + e);
}

this.Update();


treeView1.ExpandAll();


}


这个是我 之前 自己做的玩的,
但是 非常郁闷的是啥呢, 就是 cpu温度 不会改变。这种方式。
WMI 获取的温度 不会变。 我查过很多资料 都没办法 像有优化大师那样的 动态 获取。

龍月 2010-08-10
  • 打赏
  • 举报
回复
先占沙发 ,等会回复

7,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 VC.NET
社区管理员
  • VC.NET社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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