3

从我的 C# 应用程序中,我试图在另一个(特定)应用程序关闭时(就在其进程结束时)获取通知。根据我的发现,挂钩这个过程是一个可能的解决方案,但我没有设法让它工作。任何人都可以帮助我或提出其他解决方案。

4

4 回答 4

3

使用 WMI 监视进程关闭事件。这里有一些示例代码

于 2013-06-17T10:46:24.297 回答
3

您可以使用Process该类来执行此操作,特别是它的Exited事件:

var process = Process.GetProcessesByName("notepad").Single();
// or Process.GetProcessById() if you have the ID
process.EnableRaisingEvents = true;
process.Exited += YourHandler;
于 2013-06-17T11:41:01.373 回答
1

如果您所追求的进程是用户进程,或者您以管理员身份运行,则有一种非常简单的方法可以做到这一点:

var processes = Process.GetProcessesByName("Notepad");
Console.WriteLine("waiting...");
foreach(var p in processes )
    p.WaitForExit();
Console.WriteLine("notepad has exited...");

使用它的最简单方法是生成一个新任务,它将运行此代码,然后在进程退出后利用回调来完成您的附加工作。

于 2013-06-17T11:16:54.820 回答
1

我只是通过每 100 个滴答声检查一个进程来完成这些事情。它可能很昂贵,但这取决于您的需要。你可以用Process.GetProcessById()

于 2013-06-17T10:41:30.407 回答