【问题标题】:Monitoring the execution of all process监控所有进程的执行
【发布时间】:2013-04-12 08:21:29
【问题描述】:

我该怎么做?

我不想使用计时器 + 一系列进程(因为这是我一直以来的新手方式)我正在寻找更好和改进的东西。

我尝试使用 ManagementEventWatcher,但此代码示例在 Windows 7 中不起作用(我没有收到任何错误,但没有显示 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

【问题讨论】:

    标签: vb.net visual-studio process monitoring monitor


    【解决方案1】:

    Management Event Watcher 可以执行您正在查看的操作。 看一看: ManagementEventWatcher.Stop Method

    【讨论】:

    【解决方案2】:

    这将获取每个运行进程的名称和PID,只需修改此代码以获取任何附加信息...

     Dim processList As String
     For Each p As Process In Process.GetProcesses()
        processList = processList & " " & p.SessionId & vbNewLine
     Next()
     MsgBox(processList)
    

    【讨论】:

    • 谢谢你,但我知道这个方法,它只是为了你所说的,你的例子获取所有正在运行的进程,然后首先监视所有新打开进程的执行,我需要获取一个数组像您的示例中那样处理,然后经过“X”毫秒的时间我需要获取另一个进程数组并将其与旧数组进行比较以搜索新条目。我知道该怎么做,但我真的想逃避这种方法,这就是为什么我要问如何使用更多的东西并简化为 ManagementEventWatcher,但真的谢谢你的回答
    • 只用一个定时器,然后用Tick事件调用sub来比较两个列表...
    • @Sam 我知道,但就像我说的我更喜欢使用另一种方式,谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多