2009-10-06 3 views
4

У меня есть приложение Windows C++ (app.exe). Когда приложение закрыто, мне нужно выполнить некоторые задачи очистки, специфичные для моего приложения. Что происходит, когда этот процесс (app.exe) убивается через Диспетчер задач. Предполагая, что приложение по-прежнему реагирует, могу ли я как-то справиться с этой ситуацией в своем приложении app.exe?Могу ли я обработать убийство моего процесса окон через диспетчер задач?

Я ищу что-то похожее на то, как kill <pid> в Linux отправит сигнал SIGTERM в процесс, указанный pid. Затем я мог зарегистрировать свой собственный обработчик сигналов для SIGTERM и выполнить очистку.

ответ

9

Есть два способа убить приложение в диспетчере задач.

  • Уничтожение через Applications вкладка будет примерно быть эквивалентом SIGTERM. Приложение может перехватить его и сделать больше обработки, поскольку оно в основном отправляет сообщение «закрыть окно». Сообщение для улова - WM_CLOSE.
  • Убийство через Процессы вкладка примерно эквивалентна SIGKILL. Вы ничего не можете сделать, чтобы перехватить это, не дожидаясь контроля над действиями пользователя в списке «Диспетчер задач» и «Завершить процесс» или с контрольным процессом, который будет видеть, когда первый будет убит.

В качестве альтернативы, создайте приложение таким образом, чтобы он не требовал очистки, или таким образом, чтобы он выполнял очистку при запуске.

+0

К сожалению, не удается перепроектировать приложение. Его 10-летнее устаревшее приложение с несколькими тысячами строк кода. – Umair

0

Я думаю, вам понадобится другой PID, который контролирует PID вашего app.exe и выполняет необходимую работу в то время.

0

Это зависит от того, если пользователь выбирает «End Task» приложение вы будете уведомлены, и вы можете справиться с этим see this.

но если пользователь выбирает для завершения процесса, вы не имеете никакого способа справиться с этим в ваше приложение. самый простой способ - это второй процесс, или вы можете добавить в диспетчер процессов и подключить API TerminateProcess.

Смежные вопросы