C# 去获取电脑相关的基础信息,还是需要借助 外部的库,我这边尝试了自己去实现它
网上有一些信息,但不太完整,都比较零碎,这边尽量将代码完整的去展示出来
OpenHardwareMonitor获取CPU的温度和频率需要管理员权限
在没有开权限的时候就是无法使用
- 首先添加相关应用的dll文件
引用–>添加引用—>浏览(选择文件)–>确定
2. 添加头文件
using System.IO;
using OpenHardwareMonitor.Hardware;
using System.Threading;
- 添加相关代码,我这边就将整个form的代码贴上来了,这样也方便查看
代码中注释掉的部分是循环显示的一个循环逻辑
代码的功能可以将主板的名称显示出来,还有将第一个CPU的情况显示,可以根据实际情况进行修改。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Diagnostics;
using System.IO;
using OpenHardwareMonitor.Hardware;
using System.Threading;
namespace cpuGpu
{
public partial class Form1 : Form
{
public class UpdateVisitor : IVisitor
{
public void VisitComputer(IComputer computer)
{
computer.Traverse(this);
}
public void VisitHardware(IHardware hardware)
{
hardware.Update();
foreach (IHardware subHardware in hardware.SubHardware)
subHardware.Accept(this);
}
public void VisitSensor(ISensor sensor) { }
public void VisitParameter(IParameter parameter) { }
}
public Form1()
{
InitializeComponent();
}
private void button2_Click(object sender, EventArgs e)
{
UpdateVisitor updateVisitor = new UpdateVisitor();
Computer myComputer = new Computer();
myComputer.Open();
//启动主板监测
myComputer.MainboardEnabled = true;
//启动CPU监测
myComputer.CPUEnabled = true;
//启动内存监测
myComputer.RAMEnabled = true;
//启动GPU监测
myComputer.GPUEnabled = true;
//启动风扇监测
myComputer.FanControllerEnabled = true;
//启动硬盘监测
myComputer.HDDEnabled = true;
do
{
myComputer.Accept(updateVisitor);
Console.Clear();
//foreach (var hardwareItem in myComputer.Hardware)
//{
// Console.WriteLine(hardwareItem.HardwareType + "型号是:" + hardwareItem.Name);
// foreach (var sensor in hardwareItem.Sensors)
// {
// Console.WriteLine(sensor.Name + "的" + sensor.SensorType + "是" + sensor.Value);
// }
//}
string BroadName = myComputer.Hardware[0].Name.ToString();
string CPUdata = myComputer.Hardware[1].Sensors[0].Value.ToString();
System.Threading.Thread.Sleep(1000);
} while (true);
}
}
}