钩子关闭应用程序
本文关键字:应用程序 | 更新日期: 2023-09-27 18:18:54
从我的c#应用程序,我试图从另一个(特定的)应用程序获得通知,当它关闭(只是当它的进程结束)。根据我的发现,这个过程是一个可能的解决方案,但我没有设法使它工作。有谁能帮我一下或者提出另一个解决方案吗?
您可以使用Process
类来完成此操作,特别是它的Exited
事件:
var process = Process.GetProcessesByName("notepad").Single();
// or Process.GetProcessById() if you have the ID
process.EnableRaisingEvents = true;
process.Exited += YourHandler;
使用WMI监视流程关闭事件。这里有一些示例代码
我只是通过每100个刻度检查一个进程来完成这些事情。它可能很贵,但这取决于你的需要。您可以使用Process.GetProcessById()
有一种非常简单的方法可以做到这一点,如果您所追求的进程是用户进程,或者您以管理员身份运行:
var processes = Process.GetProcessesByName("Notepad");
Console.WriteLine("waiting...");
foreach(var p in processes )
p.WaitForExit();
Console.WriteLine("notepad has exited...");
使用它的最简单的方法是生成一个新的Task,它将运行此代码,然后在进程退出后利用回调来完成您的额外工作。