ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 1480|回复: 4

[原创] 获取CPU信息

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-7-23 17:59 | 显示全部楼层 |阅读模式
惯例只发图片,原因我不想说
1.png

1.png

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-7-24 18:48 | 显示全部楼层
也还有其他方式,效率较高的是API方式,环境变量方式。
不过低版本系统并没有对应的环境变量。API又有点难度。

TA的精华主题

TA的得分主题

发表于 2019-7-26 19:38 | 显示全部楼层
曲高和寡啊                                                                                             

TA的精华主题

TA的得分主题

发表于 2019-7-26 22:21 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
这个虽然效率低了点,凑合也能用(上面代码手打了一行,或许电脑原因,获取失败)^_^:
  1. Sub 查询CPU()
  2.     Dim WmiObj  As Object
  3.     For Each WmiObj In GetObject("Winmgmts:").InstancesOf("Win32_Processor")
  4.         MsgBox "当前CPU使用率为:" & WmiObj.LoadPercentage & "%"
  5.     Next
  6. End Sub

  7. Sub test()
  8. Dim sComputerName, WMI_Obj, WMI_ObjProps, ObjClsItem
  9.     sComputerName = Environ("computername")
  10.     If Len(Trim(sComputerName)) = 0 Then sComputerName = "."
  11.     Set WMI_Obj = GetObject("winmgmts:\" & sComputerName & "\root\cimv2")
  12.     Set WMI_ObjProps = WMI_Obj.ExecQuery("Select * from Win32_Processor", , 48)
  13.     For Each ObjClsItem In WMI_ObjProps
  14.         MsgBox "AddressWidth: " & ObjClsItem.AddressWidth
  15.         MsgBox "Architecture: " & ObjClsItem.Architecture
  16.         MsgBox "Availability: " & ObjClsItem.Availability
  17.         MsgBox "Caption: " & ObjClsItem.Caption
  18.         MsgBox "ConfigManagerErrorCode: " & ObjClsItem.ConfigManagerErrorCode
  19.         MsgBox "ConfigManagerUserConfig: " & ObjClsItem.ConfigManagerUserConfig
  20.         MsgBox "CpuStatus: " & ObjClsItem.CpuStatus
  21.         MsgBox "CreationClassName: " & ObjClsItem.CreationClassName
  22.         MsgBox "CurrentClockSpeed: " & ObjClsItem.CurrentClockSpeed
  23.         MsgBox "CurrentVoltage: " & ObjClsItem.CurrentVoltage
  24.         MsgBox "DataWidth: " & ObjClsItem.DataWidth
  25.         MsgBox "Description: " & ObjClsItem.Description
  26.         MsgBox "DeviceID: " & ObjClsItem.DeviceID
  27.         MsgBox "ErrorCleared: " & ObjClsItem.ErrorCleared
  28.         MsgBox "ErrorDescription: " & ObjClsItem.ErrorDescription
  29.         MsgBox "ExtClock: " & ObjClsItem.ExtClock
  30.         MsgBox "Family: " & ObjClsItem.Family
  31.         MsgBox "InstallDate: " & ObjClsItem.InstallDate
  32.         MsgBox "L2CacheSize: " & ObjClsItem.L2CacheSize
  33.         MsgBox "L2CacheSpeed: " & ObjClsItem.L2CacheSpeed
  34.         MsgBox "L3CacheSize: " & ObjClsItem.L3CacheSize
  35.         MsgBox "L3CacheSpeed: " & ObjClsItem.L3CacheSpeed
  36.         MsgBox "LastErrorCode: " & ObjClsItem.LastErrorCode
  37.         MsgBox "Level: " & ObjClsItem.Level
  38.         MsgBox "LoadPercentage: " & ObjClsItem.LoadPercentage
  39.         MsgBox "Manufacturer: " & ObjClsItem.Manufacturer
  40.         MsgBox "MaxClockSpeed: " & ObjClsItem.MaxClockSpeed
  41.         MsgBox "Name: " & ObjClsItem.Name
  42.         MsgBox "NumberOfCores: " & ObjClsItem.NumberOfCores
  43.     Next
  44. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-7-27 12:04 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 loquat 于 2019-7-27 12:06 编辑
zhanglei1371 发表于 2019-7-26 22:21
这个虽然效率低了点,凑合也能用(上面代码手打了一行,或许电脑原因,获取失败)^_^:

我没有对比,你有兴趣,可以对比一下效率,以下是高精度计时器代码
就以前的印象,好像我这个代码比你发的这种效率要高很多。。。现在我就懒得测了。

  1. Option Private Module
  2. Option Explicit

  3. Private Declare Function QueryPerformanceCounter Lib "kernel32" (x As Currency) As Boolean
  4. Private Declare Function QueryPerformanceFrequency Lib "kernel32" (x As Currency) As Boolean

  5. Dim m_Time As Double          '
  6. Dim m_TimeStart As Currency   '计时起点
  7. Dim curFreq As Currency       '当前cpu频率
  8. Dim m_TimeFreq As Double

  9. Public Property Get mTimer() As Double
  10.     Dim curTime As Currency
  11.     QueryPerformanceCounter curTime
  12.     mTimer = 1000 * (curTime - m_TimeStart) * m_TimeFreq + m_Time    '单位毫秒
  13. End Property

  14. Public Property Let mTimer(ByVal newValue As Double)
  15.     Dim curOverhead As Currency
  16.     m_Time = newValue
  17.     QueryPerformanceFrequency curFreq
  18.     m_TimeFreq = 1 / curFreq
  19.     QueryPerformanceCounter curOverhead
  20.     QueryPerformanceCounter m_TimeStart
  21.     m_TimeStart = m_TimeStart + (m_TimeStart - curOverhead)
  22. End Property
复制代码
使用简单:
mTimer = 0
你的代码
debug.print mTimer  '精确到毫秒级


您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2025-1-11 06:05 , Processed in 0.020075 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表