从我的C#应用程序中,我试图在其关闭时(仅在其进程结束时)从另一个(特定)应用程序获取通知。从我发现的,钩子这个过程是一个可能的解决方案,但我没有设法使其工作。任何人都可以帮助我或提出另一种解决方案。
答案 0 :(得分:3)
使用WMI监控流程结束事件。有一些example code here。
答案 1 :(得分:3)
您可以使用Process
类来执行此操作,特别是Exited
事件:
var process = Process.GetProcessesByName("notepad").Single();
// or Process.GetProcessById() if you have the ID
process.EnableRaisingEvents = true;
process.Exited += YourHandler;
答案 2 :(得分:1)
我只是通过每100个刻度检查一个流程来完成这些事情。它可能很贵,但这取决于你的需要。
你可以使用Process.GetProcessById()
来获取
答案 3 :(得分:1)
有一种非常简单的方法可以执行此操作,前提是您所使用的流程是用户流程,或者您是以管理员身份运行:
var processes = Process.GetProcessesByName("Notepad");
Console.WriteLine("waiting...");
foreach(var p in processes )
p.WaitForExit();
Console.WriteLine("notepad has exited...");
使用它的最简单方法是生成一个新任务,该任务将运行此代码,然后利用回调在进程退出后执行您的aditional工作。