1)可以查看进程的各项基本信息,如cpu,内存,父进程,执行路径,创建者等
2)可以中止进程,创建新进程
3)可以配置目标进程,配置刷新速度
最终效果图:

(以下给出部分代码,其余像进程的创建、中止等,使用process类将很容易实现)
1)使用wmi获取父进程id,进程创建者
(注意,使用wmi获得的内容,不宜循环刷新,这样代价比较大)
添加命名空间:
Imports System.Management
Public Class HandleObjectReady
Private complete As Boolean = false
Private obj As ManagementBaseObject
Public ReadOnly Property Complete As Boolean
Get
Return complete
End Get
End Property
Public ReadOnly Property Obj As ManagementBaseObject
Get
Return obj
End Get
End Property
Public Sub Done(ByVal sender As Object, ByVal e As ObjectReadyEventArgs)
complete = true
obj = e.NewObject
End Sub
End Class
Private Sub FillDetailUseWmi(ByVal pID As Integer)
Dim searcher As ManagementObjectSearcher = New ManagementObjectSearcher(("Select * From Win32_Process Where ProcessID=" + pID))
Dim moc As ManagementObjectCollection = searcher.Get
Dim observer As ManagementOperationObserver = New ManagementOperationObserver
Dim hor As HandleObjectReady = New HandleObjectReady
AddHandler observer.ObjectReady, AddressOf hor.Done
For Each mo As ManagementObject In moc
mo.InvokeMethod(observer, "GetOwner", Nothing)
While Not hor.Complete
System.Threading.Thread.Sleep(500)
End While
Dim user As String = ""
(hor.Obj("returnValue")。ToString = "0")
user = hor.Obj.Properties("User")。Value.ToString
If Not Me.mDict.ContainsKey(pID) Then Return
End If
If ((Not (mo("ParentProcessID")) Is Nothing) _
AndAlso Me.mDict.ContainsKey(Convert.ToInt32(mo("ParentProcessID")))) Then
Me.mDict(pID)。ParentProce = Me.mDict(Convert.ToInt32(mo("ParentProcessID")))。ProceName
End If
Me.mDict(pID)。Creator = user
If (Not (Me.HandleDetailList) Is Nothing) Then
Me.HandleDetailList(Me.mDict(pID))
End If
Next
searcher.Dispose
searcher = Nothing
moc.Dispose
moc = Nothing
observer = Nothing
hor = Nothing
End Sub

