C#使用 OpenHardwareMonitor获取CPU或显卡温度、使用率、时钟频率相关方式

C# 去获取电脑相关的基础信息,还是需要借助 外部的库,我这边尝试了自己去实现它

网上有一些信息,但不太完整,都比较零碎,这边尽量将代码完整的去展示出来

OpenHardwareMonitor获取CPU的温度和频率需要管理员权限
在没有开权限的时候就是无法使用

  1. 首先添加相关应用的dll文件

引用–>添加引用—>浏览(选择文件)–>确定
在这里插入图片描述
2. 添加头文件

using System.IO;
using OpenHardwareMonitor.Hardware;
using System.Threading;

  1. 添加相关代码,我这边就将整个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);}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/326529.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HttpRunner的测试用例分层机制

测试用例分层介绍: 在接口自动化测试维护过程中,由于测试用例的增加和需求变更导致测试用例的调整,使自动化测试用例的维护非常麻烦,直接关系到自动化测试能否持续有效地在项目中开展。 概括来说,测试用例分层机制的核…

Android低功耗蓝牙开发总结

基础使用 权限申请 蓝牙权限在各个版本中略有不同 Android 12 及以上版本,如果不需要通过蓝牙来推断位置的话,蓝牙扫描不需要开启位置权Android 11 及以下版本,蓝牙扫描必须开启位置权限Android 9 及以下版本,蓝牙扫描可开启粗…

MVCC 并发控制原理-源码解析(非常详细)

基础概念 并发事务带来的问题 1)脏读:一个事务读取到另一个事务更新但还未提交的数据,如果另一个事务出现回滚或者进一步更新,则会出现问题。 2)不可重复读:在一个事务中两次次读取同一个数据时&#xff0c…

【Java EE初阶六】多线程案例(单例模式)

1. 单例模式 单例模式是一种设计模式,设计模式是我们必须要掌握的一个技能; 1.1 关于框架和设计模式 设计模式是软性的规定,且框架是硬性的规定,这些都是技术大佬已经设计好的; 一般来说设计模式有很多种,…

vue-video-player播放hls视频流

需求 最近需要接入海康视频摄像头,然后把视频的画面接入到自己的网站系统中。以前对接过rtsp固定IP的显示视频,这次的不一样,没有了固定IP。海康的解决办法是,摄像头通过配置服务器到萤石云平台,然后购买企业版账号和…

微服务实战系列之API加密

前言 随着一阵阵凛冽寒风的呼啸,新的年轮不知不觉滚滚而来。故事随着2023的远去,尘封于案底;希望迎着新年,绽放于枝头。在2024新岁启航,扬帆破浪之时,让烦恼抛洒于九霄,让生机蓬勃于朝朝暮暮。 …

Glide加载不出图片与请求浏览器资源时中文转码问题

报错代码如图:Image load failed: Failed to load resourse 首先确保你的图片 URL 地址是正确的,可以通过在浏览器中直接访问这个 URL 来测试。另外,确保 URL 地址不包含特殊字符或空格,以免影响加载。 然后确定依赖库没有问题&am…

C++ 数组详解,很全,很详细

数组 (C) 数组是相同类型的对象序列,它们占据一块连续的内存区。 传统的 C 样式数组是许多 bug 的根源,但至今仍很常用,尤其是在较旧的代码库中。 在新式 C 中,我们强烈建议使用 std::vector 或 std::array,而不是本部…

Python基础入门第七课笔记(自定义函数 define)

函数 函数必须先定义再调用 函数必须先定义再调用 函数必须先定义再调用 定义函数: def 函数名(形参): 代码1 代码2 ………. 调用函数: 函数名(实参) 形参&…

视频智能分析支持摄像头异常位移检测,监测摄像机异常位移变化,保障监控状态

我们经常在生产场景中会遇到摄像头经过风吹日晒,或者异常的触碰,导致了角度或者位置的变化,这种情况下,如果不及时做出调整,会导致原本的监控条件被破坏,发生事件需要追溯的时候,查不到对应位置…

SSM在线员工订餐网站平台----计算机毕业设计

项目介绍 本项目分为前后台,前台为普通用户登录,后台为管理员登录; 用户角色包含以下功能: 用户登录与注册,查看首页,查看菜品详情,查看购物车,提交订单,查看订单,修改个人信息等功能。 管理员角色包含以下功能: 管…

Linux基础——进程地址空间

1. 地址空间的验证 之前我们在学习语言时,曾知道有下面这张图 对于这个图我们可以用下面的代码验证 运行后我们可以发现 其对应关系如下 我们使用fork函数,来分别对父子进程中的g_val进行修改,即 运行后我们可以发现 在子进程修改了g_val后…