[英]How to detect if my Windows application has ended?
基本上,标题说的是我需要检测程序何时结束(例如有人单击任务管理器中的结束任务或诸如此类)。 谁能指出我通过某种例子来处理此类事件的事件吗? 感谢您提供的任何帮助
您需要打开此过程。 这样,您将检索其句柄。 之后,您可以简单地等待此句柄。
HANDLE h = OpenProcess(....);
WaitForSingleObject(h);
进程和线程的处理在许多方面都类似于Windows事件处理。 一旦该过程或线程完成,就会发出信号。
这取决于您的应用如何终止以及它是什么类型的应用。
对于具有UI的应用程序:
对于控制台应用程序,您可以使用SetConsoleCtrlHandler函数来通知大多数应用程序终止情况(我对此没有任何经验,因此无法提供很多详细信息)。
对于服务,可以以几乎相同的方式使用RegisterServiceCtrlHandler函数。
对于所有类型的应用程序,如果该应用程序通过TerminateProcess函数被另一个进程强行终止, 则无法获得通知 :
如果某个进程被TerminateProcess终止,则该进程的所有线程将立即终止,而没有机会运行其他代码。 这意味着线程不执行终止处理程序块中的代码。 此外,没有附加的DLL通知该进程正在分离。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.