WMI是个好东西。
通过WMI我们可以直接访问操作系统底层的各种信息。
通过WMI我们不需要写复杂的API来访问操作系统的各种硬件信息。
我们一般使用WMI来访问本地电脑的数据。
在VBA中使用WMI访问本地电脑数据的一般步骤是:
一、连接WMI服务,获取SWbemServices对象。
代码如下:
strComputer = “.”
Set objWMIServices = GetObject(“winmgmts:\\” & strComputer & “\root\CIMV2”)
二、使用 ExecQuery方法或者InstancesOf 方法获取SWbemObjectSet集合
代码如下:
Set colSWbemObjectSet = objWMIServices.InstancesOf(“Win32_Process”)
三、循环遍历SWbemObjectSet集合中的SWbemObject对象
代码如下:
For Each SWbemObject In colSWbemObjectSet
Debug.Print SWbemObject.Name
Next
通过上述三步基本可以解决各种操作系统硬件数据访问问题。
其中Win32_Process 表示系统进程,类似这样的类名可以在这里找到。
以下是一个VBA中使用WMI的简单示例,获取所有当前系统的进程名:
Sub exceloffice()
‘作者:水星excel
strComputer = “.”
Set objWMIServices = GetObject(“winmgmts:\\” & strComputer & “\root\CIMV2”)
Set colSWbemObjectSet = objWMIServices.InstancesOf(“Win32_Process”)
For Each SWbemObject In colSWbemObjectSet
‘列举进程名
Debug.Print SWbemObject.Name
Next
End Sub
发表评论