您的位置: 旅游网 > 时尚

Visual Basic编程访问WMI对象_a

发布时间:2020-01-17 01:30:25

WMI还支持事件处理,让程序可以处理系统事件,例如程序运行、关闭,可移动驱动器的插入、取出等。下面是一个可以对系统中运行程序进行监控的程序。

首先建立一个新工程,然后点击菜单的 project | 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

获取更多信息。查看本文来源

勃起功能障碍每日治疗吃什么好
丁桂薏芽健脾凝胶怎么吃
藤黄健骨丸能治肩膀疼吗
汉森四磨汤口服液是中药吗
猜你会喜欢的
猜你会喜欢的