如题,那位大侠能够提供WMI的应用例程,最好有详细说明
------解决方案--------------------------------------------------------
- VB code
看一个使用WMI的例子,该例子列举本机上的所有系统服务的名字、状态、启动方式、登录身份、描述、路径。(就是用VBA做一个和控制面板里的服务组件一样的服务管理器)例1:打开VBA编辑器,单击“工具”—“引用“ ,添加“Microsoft WMI Scripting V1.2 Library”,在Sheet1中添加CommandButton1和如下代码:Option ExplicitDim WMILocator As New SWbemLocator '定义一个指向WMI的指针Dim WMIServices As SWbemServicesDim WMIObjectSet As SWbemObjectSetDim WMIObject As SWbemObjectPrivate Sub CommandButton1_Click()Dim i As LongSheet1.Cells.ClearSheet1.Range("a1:e1") = Array("名称", "状态", "启动类型", "登录身份", "描述")Set WMIServices = WMILocator.ConnectServer() '利用指针连接到本机的WMI,返回一个对 SWbemServices 对象的引用Set WMIObjectSet = WMIServices.InstancesOf("Win32_Service")'用对象WMIServices的InstancesOf方法返回Win32_Service类名标识的所有实例i = 2With Sheet1 For Each WMIObject In WMIObjectSet '在WMIObjectSet(Win32_Service类集合)中遍历每个实例 .Range("a" & i).Value = WMIObject.DisplayName '服务名称添加到a列 If WMIObject.State = "Stopped" Then '判断对象State属性的值并转换为中文添加到B列 .Range("b" & i).Value = "停止" Else .Range("b" & i).Value = "启动" End If If WMIObject.StartMode = "Disabled" Then '判断对象StartMode属性的值并转换为中文添加到C列 .Range("c" & i).Value = "禁用" ElseIf WMIObject.StartMode = "Manual" Then .Range("c" & i).Value = "手动" Else .Range("c" & i).Value = "自动" End If .Range("d" & i).Value = WMIObject.StartName '将服务的登录身份添加到D列 .Range("e" & i).Value = WMIObject.Description '将服务的描述添加到E列 i = i + 1 NextEnd WithSet WMIObject = NothingSet WMIObjectSet = NothingEnd Sub
------解决方案--------------------------------------------------------
总结一下使用WMI的步骤:
1、添加对“Microsoft WMI Scripting V1.1 Library”的引用。
2、创建SwbemLocator指针。创建指针的目的是为了建立对WMI对象的引用实例,然后用这个实例操作WMI。
用Dim WMILocator As New SwbemLocator定义语句直接创建就可以了。
3、连接到WMI服务
Set WMIServices = WMILocator.ConnectServer()
'利用指针连接到指定计算机的WMI服务,然后返回一个SwbemServices对象。
4、获得WMI类的实例集合
Set WMIObjectSet = WMIServices.InstancesOf(“类名”)
'利用SwbemServices对象的InstancesOf 方法返回指定类名的所有实例
5、使用WMI资源