Вы не можете обнаружить, что ваш собственный процесс был убит. Когда кто-то вызывает NtTerminateProcess () с вашим процессом, и у него есть разрешение на это, вам не сообщают. Все ваши потоки останавливаются, и ваш процесс исчезает из-под вас.
К счастью, большую часть очистки не нужно выполнять вручную - вся эта память, которую вы не освободили, будет возвращена ОС, все те системные дескрипторы, которые вы не закрыли, будут очищены автоматически, и все из временных файлов, которые вы открыли как TEMPORARY (вы делаете это правильно?), будут автоматически удалены.
Причина этого проста. Если вы решили убить программу через диспетчер задач - это потому, что пользователь решил, что она плохо себя ведет. Если вы скажете ему, чтобы он прекратил себя нехорошо, ну, может, он вас проигнорирует, потому что, ну, он плохо себя ведет.
Похоже, что лучший способ для управления процессом - предоставить законный способ выхода из процесса - через окно, которое обрабатывает событие WM_CLOSE, или запустив его в консоли, которая может быть прервано с помощью красной кнопки X в углу. Диспетчер задач должен быть мерой последней инстанции. Если пользователь столкнется с проблемой Ctrl + Alt + Del вашего процесса до смерти, у вас не будет второго шанса.