gpt4 book ai didi

c# - 最近的 OpenHardwareMonitor 示例代码 C#

转载 作者:太空狗 更新时间:2023-10-29 22:10:59 24 4
gpt4 key购买 nike

有谁知道我在哪里可以找到在 C# 中使用 OpenHardwareMonitor.dll 的最新示例。我尝试了一个简单的实现,但无法获得 cpu Temp。我知道图书馆一定有它,因为应用程序本身会获取温度。

我觉得您必须注册事件才能阅读某些内容,但我发现很难找到一个好的例子。

Computer myComputer = new Computer();

myComputer.Open();

foreach (var hardwareItem in myComputer.Hardware)
{

if (hardwareItem.HardwareType == HardwareType.CPU)
{
foreach (var sensor in hardwareItem.Sensors)
{
if (sensor.SensorType == SensorType.Temperature)
{
Console.WriteLine(sensor.Value);
}
}
}

}

任何想法或见解将不胜感激。

最佳答案

下面是我得到的。我没有更多时间花在这上面,所以我会把剩下的侦查工作留给你。

我找不到任何文档。代码中甚至没有 XML 注释,因此我深入研究了源代码以达到我的目的。你将不得不做同样的事情。

您缺少的第一件事是必须设置 Computer.CPUEnabled在调用 Computer.Open 之前将属性设置为 true .这会导致 Open 添加一个 CPU 硬件设备。

您缺少的第二件事是您必须调用 Computer.Open .

您缺少的第三件事是您必须调用 Hardware.Update让它重新轮询硬件。

您遗漏的第四件事是传感器值为 Nullable<float> .您必须检查那里是否存在有效值。

这还不够。虽然它现在输出四个温度传感器(在我的机器上),但从来没有温度值。

我翻了翻设置,发现有这些很长的cpu和cpu温度的初始化项。我添加了代码以将这些设置放入 Computer (至少对于其中一个核心而言),但它没有任何效果。

失败的是 IntelCpu.Update 中的调用

Ring0.RdmsrTx(IA32_THERM_STATUS_MSR, out eax, out edx, 1UL << cpuid[i][0].Thread)

这就是为什么我怀疑缺少一些初始化。

祝你好运!

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Windows.Forms;
using OpenHardwareMonitor.Hardware;

namespace WindowsFormsApplication1
{
public class MySettings : ISettings
{
private IDictionary<string, string> settings = new Dictionary<string, string>();

public MySettings(IDictionary<string, string> settings)
{
this.settings = settings;
}

public bool Contains(string name)
{
return settings.ContainsKey(name);
}

public string GetValue(string name, string value)
{
string result;
if (settings.TryGetValue(name, out result))
return result;
else
return value;
}

public void Remove(string name)
{
settings.Remove(name);
}

public void SetValue(string name, string value)
{
settings[name] = value;
}
}

public class Form1 : Form
{
Computer myComputer;
Timer timer = new Timer { Enabled = true, Interval = 1000 };

public Form1()
{
timer.Tick += new EventHandler(timer_Tick);

MySettings settings = new MySettings(new Dictionary<string, string>
{
{ "/intelcpu/0/temperature/0/values", "H4sIAAAAAAAEAOy9B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcplVmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/Iu6//MH37x79i9/+NX6N3/TJm9/5f/01fw1+fosnv+A/+OlfS37/jZ/s/Lpv9fff6Ml/NTef/yZPnozc5679b+i193//TQZ+/w2Dd+P9/sZeX/67v/GTf/b3iP3u4/ObBL//73+i+f039+D8Zk/+xz/e/P6beu2TQZju8yH8f6OgzcvPv/U3/Rb8+z/0f/9b/+yfaOn8079X6fr6Cws7ln/iHzNwflPv99/wyS/+xY4+v/evcJ+733+jJ5//Cw7/4ndy9Im3+U2e/Fbnrk31C93vrt/fyPvdb+N//hsF7/4/AQAA//9NLZZ8WAIAAA==" },
{ "/intelcpu/0/load/0/values", "H4sIAAAAAAAEAOy9B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcplVmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/Iu6//MH37x79i9++mpwcv/md/9df89egZ/xX/ym/5y/4D37618Lv7ya//u+58+u+5d9/z7/5t/w9/6u5fP5bH/6av+eTkXyefXxp26ONaf/v/dG/sf39D/rvnv4e5vc/0IP56/waK/vuHzf5I38P8/tv+mv8Rbb9f0pwTF9/zr/1X9vP/8I//+/6Pf7Z30N+/zdf/HX29zd/859q4aCNP5b//U+U3/+7f+zXOjZwfqvDX/V7/o9/vPz+a1G/pv0f+fGlhfk7eZ//N3/0v28//5X0u/n8Cxq7+f1X/tHft20A5x8a/W5/02+BP36Nf+j/nv8XfzrT+c2//Ob4p3+vktvUhNs/+xcWikP6e/4T/5jS5M8/sL8vP/5ff49f/Ivl9//sHzv6PX/vXyG//9R/94/9HuZ34P/5vyC//3W/5e/1exa/k+Bw4bUBnU2bP4Xg/1bn0uafeTH6PatfKL//N3/0t2y/gG9+/8+IzqYNxmU+/+jwX7afY67/nwAAAP//GYSA31gCAAA=" },
});

myComputer = new Computer(settings) { CPUEnabled = true };
myComputer.Open();
}

void timer_Tick(object sender, EventArgs e)
{
Trace.WriteLine("");
foreach (var hardwareItem in myComputer.Hardware)
{
if (hardwareItem.HardwareType == HardwareType.CPU)
{
hardwareItem.Update();
foreach (IHardware subHardware in hardwareItem.SubHardware)
subHardware.Update();

foreach (var sensor in hardwareItem.Sensors)
{
if (sensor.SensorType == SensorType.Temperature)
{
Trace.WriteLine(String.Format("{0} Temperature = {1}", sensor.Name, sensor.Value.HasValue ? sensor.Value.Value.ToString() : "no value"));
}
}
}
}
}
}
}

关于c# - 最近的 OpenHardwareMonitor 示例代码 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11765192/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com