基本上标题说我需要在我的程序结束时检测到,就像某人点击任务管理器中的结束任务或其他什么时一样。任何人都可以指出我用某个例子或其他东西来处理这种事件吗?感谢您给予的任何帮助
答案 0 :(得分:2)
您需要打开此过程。这样您将检索其句柄。之后,你可以简单地等待这个句柄。
HANDLE h = OpenProcess(....);
WaitForSingleObject(h);
进程和线程的句柄在很多方面看起来像Windows事件句柄。一旦这个过程或线程完成,它们就会发出信号。
答案 1 :(得分:0)
这取决于您的应用的终止方式以及应用的类型。
对于具有UI的应用:
对于控制台应用程序,您可以使用SetConsoleCtrlHandler函数来通知大多数应用程序终止的情况(我没有任何相关经验,因此无法提供许多详细信息)。
对于服务,您可以以相同的方式使用RegisterServiceCtrlHandler函数。
对于所有类型的应用,如果应用通过TerminateProcess功能被另一个进程强制终止,there is no way to get notified:
如果进程被TerminateProcess终止,则进程的所有线程立即终止,无法运行其他代码。这意味着线程不会在终止处理程序块中执行代码。此外,没有附加的DLL通知进程正在分离。