C# 如何创建监控程序启动的服务?
我正在尝试创建一个服务,它将等待程序运行C# 如何创建监控程序启动的服务?,c#,asp.net,winforms,wcf,service,C#,Asp.net,Winforms,Wcf,Service,我正在尝试创建一个服务,它将等待程序运行 假设我运行iTunes.exe,我的服务将执行类似于显示消息框的操作,该消息框将显示“iTunes.exe已启动”。实现这一点的唯一方法是定期获取进程列表,并检查您等待的进程是否已启动: while(Process.GetProcesses().All(p=>p.ProcessName.ToLower() != "itunes.exe"){ Thread.Sleep(2000); } //Do Something! 编辑: 更好的解决方案
假设我运行iTunes.exe,我的服务将执行类似于显示消息框的操作,该消息框将显示“iTunes.exe已启动”。实现这一点的唯一方法是定期获取进程列表,并检查您等待的进程是否已启动:
while(Process.GetProcesses().All(p=>p.ProcessName.ToLower() != "itunes.exe"){
Thread.Sleep(2000);
}
//Do Something!
编辑:
更好的解决方案是查询Windows Management Instrumentation服务并观察新流程:
// Run this in another thread and make sure you dispose the event watcher before exit
var start = new ManagementEventWatcher(new WqlEventQuery("SELECT * FROM Win32_ProcessStartTrace"));
start.EventArrived += new EventArrivedEventHandler(delegate (object sender, EventArrivedEventArgs e) {
Console.WriteLine("Name: {0}, Command Line: {1}", e.NewEvent.Properties["ProcessName"].Value, e.NewEvent.Properties["Commandline"].Value);
});
start.Start();
你写过代码吗?这是一个非常糟糕的方法。一个糟糕但唯一的解决方案。是的,对不起,我的糟糕。我忘记了WMI请求:)