有人知道如何让我的 VB.net 应用程序等待,直到检测到进程正在运行吗?
我可以找到如何检测 exe 运行完毕后的示例,但没有找到检测 exe 何时启动的示例?
最佳答案
您可以使用System.Management.ManagementEventWatcher等待某些 WMI 事件发生。您需要给它一个查询类型和条件,让它监视下一次创建流程,然后让它在发生这种情况时执行某些操作。
例如,如果您想要:
Dim watcher As ManagementEventWatcher
Public Sub Main()
Dim monitoredProcess = "Notepad.exe"
Dim query As WqlEventQuery = New WqlEventQuery("__InstanceCreationEvent", new TimeSpan(0, 0, 1), "TargetInstance isa ""Win32_Process"" And TargetInstance.Name = """ & monitoredProcess & """")
watcher = New ManagementEventWatcher()
watcher.Query = query
'This starts watching asynchronously, triggering EventArrived events every time a new event comes in.
'You can do synchronous watching via the WaitForNextEvent() method
watcher.Start()
End Sub
Private Sub Watcher_EventArrived(sender As Object, e As EventArrivedEventArgs) Handles watcher.EventArrived
'Do stuff with the startup event
End Sub
最终您需要停止观察程序,可以通过关闭应用程序或调用watcher.Stop()
来完成。这是作为大脑编译器编写的,所以如果有任何问题请告诉我。
关于vb.net - 检测exe何时启动vb.net,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18757391/