用SolidWorks画图的时候,有时候会开启多个SW的窗口,一旦窗口多开,用了一段时间之后,CPU的频率就会下降,软件就会变得非常卡,我经常开着任务管理器,将任务管理器窗口显示的非常简洁,来只显示CPU的频率,供我判断是不是要重启SolidWorks了,但是我依旧觉得这个窗口有点大了。而且也不方便,每次开机需要打开,另外也阻碍了我查看电脑的进程。
用就要极简,不要那些假动作!那就在网上搜段代码来写个显示CPU频率吧,但是很无语的搜出来的都是CPU的占用率,感觉很不爽,我要的是CPU频率,不是CPU占用率,可能是百度不理解我的意思!
那就只好自己照葫芦画瓢写一个算了,反正网上有大牛现成的库可以调用,最后的效果如下(窗口小,就对了):
----------------------------------------------------------------------
采用的是OpenHardwareMonitor库(项目地址:https://openhardwaremonitor.org/),VS里面直接NuGet搜一下,第一个就是的,直接安装,然后引用:
using OpenHardwareMonitor.Hardware;
剩余主要代码如下:
Computer computer = new Computer(); computer.Open(); computer.CPUEnabled = true; for (int i = 0; i < computer.Hardware.Length; i++) { //循环找到HardwareType为cpu,然后显示每一个CPU的核心频率 if (computer.Hardware[i].HardwareType == HardwareType.CPU) { for (int j = 0; j < computer.Hardware[i].Sensors.Length; j++) { if (computer.Hardware[i].Sensors[j].SensorType == SensorType.Clock) { textBox1.Text = textBox1.Text + computer.Hardware[i].Sensors[j].Value.ToString() + "\r\n"; } } } }
以上代码显示所有的核心代码的频率,直接加上Clock事件,每1秒执行一次就能刷新了。
因为我的CPU有6个核心,所以显示了6个频率,我看了下,6个频率都差不多,我直接取其中一个算了,然后直接显示出来,这样的话,程序执行起来占用的资源应该又更小一些。
直接调试跟踪,发现computer.Hardware[0].Sensors[14]显示的就是第一个核心的频率,直接
float f = (float)computer.Hardware[0].Sensors[14].Value/1000; //获取第一个CPU核心的频率,一共6个呢,我就取第一个吧,省事。 label1.Text =f.ToString("F2")+"GHz"; //保留两位有效数字 if (f < 3.2) { label1.ForeColor=Color.Red; } //频率小于3.2GHz时,字体变红
记得要除以1000,换算成GHz。
剩下的就是优化窗口,设定窗口默认悬停位置,始终前端显示。最后将程序加入到启动项,每次开机启动。
最后,咱们看看官方出品的电脑硬件监控软件: