C# 钩子关闭应用程序

C# 钩子关闭应用程序,c#,.net,windows,C#,.net,Windows,在我的C#应用程序中,我试图在另一个(特定的)应用程序关闭时(就在其进程结束时)获得通知。从我发现的情况来看,钩住这个过程是一个可能的解决方案,但我没有设法让它工作。有谁能帮我解决这个问题,或者提出另一个解决方案。我只需每100次检查一个流程就可以完成这类工作。它可能很贵,但这取决于你的需要。 您可以使用Process.GetProcessById()来监视进程关闭事件。有一些。有一种非常简单的方法可以做到这一点,前提是您所关注的进程是用户进程,或者您正在以管理员身份运行: var proces

在我的C#应用程序中,我试图在另一个(特定的)应用程序关闭时(就在其进程结束时)获得通知。从我发现的情况来看,钩住这个过程是一个可能的解决方案,但我没有设法让它工作。有谁能帮我解决这个问题,或者提出另一个解决方案。

我只需每100次检查一个流程就可以完成这类工作。它可能很贵,但这取决于你的需要。
您可以使用
Process.GetProcessById()
来监视进程关闭事件。有一些。

有一种非常简单的方法可以做到这一点,前提是您所关注的进程是用户进程,或者您正在以管理员身份运行:

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

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

您可以使用
进程
类来执行此操作,特别是它的
退出
事件:

var process = Process.GetProcessesByName("notepad").Single();
// or Process.GetProcessById() if you have the ID
process.EnableRaisingEvents = true;
process.Exited += YourHandler;

请参考此解决方案!谢谢你,斯维克。