盾怪网教程:是一个免费提供流行杀毒软件教程、在线学习分享的学习平台!

Visual Basic编程访问WMI对象

时间:2024/12/29作者:未知来源:盾怪网教程人气:

[摘要]references 项,在references列表中选中Microsoft WMI Scripting Library将WMI对象库加入工程中。然后在Form1中加入一个ListBox控件,然后在...
references 项,在references列表中选中Microsoft WMI Scripting Library将WMI对象库加入工程中。然后在Form1中加入一个ListBox控件,然后在Form1中加入以下代码:

Option Explicit

Dim Locator As SWbemLocator
Dim Services As SWbemServices
Dim WithEvents StatusSink As SWbemSink

Private Sub KillEvents()
 StatusSink.Cancel
 Set StatusSink = Nothing
End Sub

Private Sub Form_Load()
 Dim Query As String

 Set StatusSink = New SWbemSink
 Set Locator = CreateObject("WbemScripting.SWbemLocator")
 Set Services = Locator.ConnectServer()

 Query = "SELECT * FROM __InstanceCreationEvent "
 Query = Query + "WITHIN 1 "
 Query = Query + "WHERE TargetInstance ISA ‘Win32_Process‘"

 Services.ExecNotificationQueryAsync StatusSink, Query
End Sub

Private Sub StatusSink_OnObjectReady(ByVal StatusEvent As SWbemObject, _
ByVal EventContext As SWbemNamedValueSet)

 Dim arr
 Dim strQue As String
 Dim i As Integer

 List1.Clear
 arr = Split(StatusEvent.GetObjectText_, Chr(10))
 For i = LBound(arr) To UBound(arr)
  List1.AddItem arr(i)
 Next i
End Sub

Private Sub StatusSink_OnCompleted(ByVal HResult As WbemErrorEnum, _
ByVal ErrorObject As SWbemObject, _
ByVal EventContext As SWbemNamedValueSet)

If HResult <> wbemErrCallCancelled Then
‘错误处理
End If
End Sub

  在上面的程序中定义了一个SWbemSink对象StatusSink,然后建立一个SWbemServices对象Server,并将StatusSink连接到Server对象上。这样就可以通过StatusSink监控程序的运行。

  运行程序,然后任意运行一个程序,在Form1的ListBox中就可以列出运行的程序的信息。

  WMI应用最强大的一面是可以通过WEB页面来实现远程管理。下面我们来建立一个HTML页面,该页面可以实现向上面的VB程序一样动态监控系统中运行的程序。监控系统中程序运行的HTML代码如下:

<html>
<head>
<object ID="mysink" CLASSID= "CLSID:75718C9A-F029-11d1-A1AC-00C04FB6C223"></object>
</head>
<SCRIPT>
 function window.onload()
 {
  var locator = new ActiveXObject ("WbemScripting.SWbemLocator");
  var service = locator.ConnectServer();
  szQuery = "SELECT * FROM __InstanceCreationEvent ";
  szQuery += "WITHIN 1 ";
  szQuery += "WHERE TargetInstance ISA ‘Win32_Process‘";
  service.ExecNotificationQueryAsync(mysink,szQuery);
 }
</SCRIPT>
<script FOR="mysink" EVENT="OnObjectReady(obj, objAsyncContext)">
 document.all.info.innerHTML += obj.TargetInstance.Name + "<br>";
</script>
<body>
 <span ID="info"></span>
</body>
</html>

  保存代码为Htm后缀的页面文件。双击打开网页,然后运行一个程序,在网页上就可以列出运行的程序的文件名。

  以上简要的介绍了一下WMI的应用,实际上WMI对象的操作是十分复杂,功能也是很强大的,例如你可以通过WMI在服务器上监控整个局域网上的计算机、向局域网上的计算机批量安装软件(例如杀毒软件)。通过页面远程访问服务器,控件服务器运行程序,添加用户等。关于更多的WMI的应用,读者可以访问MSDN上WMI开发的主页:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/wmistart_5kth.asp

  获取更多信息。


关键词:Visual Basic编程访问WMI对象




Copyright © 2012-2018 盾怪网教程(http://www.dunguai.com) .All Rights Reserved 网站地图 友情链接

免责声明:本站资源均来自互联网收集 如有侵犯到您利益的地方请及时联系管理删除,敬请见谅!

QQ:1006262270   邮箱:kfyvi376850063@126.com   手机版