vb.net - 检测exe何时启动vb.net

标签 vb.net process

有人知道如何让我的 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/

相关文章:

c# - 从 C# 启动远程进程的问题

java - 如何启动第二个 Java 进程?

linux - 内核和正常进程

windows - 有没有办法以编程方式将焦点集中到 Windows 中的应用程序?

asp.net - 未找到目录异常...但我可以浏览到该目录吗?

VB.Net 将 datagridview Comboboxcolumn 绑定(bind)到 datagridviewTextboxColumn

c - 有没有一种轻量级的方法来获取Linux中当前的进程数?

vb.net - 我应该如何对简单的 CRUD 类进行单元测试?

vb.net - 如何只比较日期部分而不是两个日期的时间?

C:Linux中进程如何通信