我该怎么做呢?
我不想使用计时器+一组进程(因为这是我一直使用的新手方式),我在寻找更好和改进的东西。
我尝试过使用ManagementEventWatcher,但此代码示例在Windows7中不起作用(我没有收到任何错误,但没有显示MsgBoxes):
Public Class Form1
Dim WithEvents startWatch As New System.Management.ManagementEventWatcher(New System.Management.WqlEventQuery("SELECT * FROM Win32_ProcessStartTrace"))
Dim WithEvents stopWatch As New System.Management.ManagementEventWatcher(New System.Management.WqlEventQuery("SELECT * FROM Win32_ProcessStopTrace"))
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
AddHandler startWatch.EventArrived, AddressOf startWatch_EventArrived
AddHandler stopWatch.EventArrived, AddressOf stopWatch_EventArrived
startWatch.Start()
stopWatch.Start()
End Sub
Public Sub startWatch_EventArrived(ByVal sender As Object, ByVal e As System.Management.EventArrivedEventArgs)
MsgBox("Process started: " & e.NewEvent.Properties("ProcessName").Value)
End Sub
Private Sub stopWatch_EventArrived(ByVal sender As Object, ByVal e As System.Management.EventArrivedEventArgs)
MsgBox("Process stopped: " & e.NewEvent.Properties("ProcessName").Value)
End Sub
Private Sub Form1_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing
startWatch.Stop()
stopWatch.Stop()
End Sub
End Class发布于 2013-12-05 13:37:03
Management Event Watcher可以执行您所需的操作。看看:ManagementEventWatcher.Stop Method
发布于 2013-04-12 17:33:36
这将获得每个正在运行的进程的名称和PID,只需修改此代码即可获得任何其他信息...
Dim processList As String
For Each p As Process In Process.GetProcesses()
processList = processList & " " & p.SessionId & vbNewLine
Next()
MsgBox(processList)https://stackoverflow.com/questions/15966405
复制相似问题