Как удалить, когда моя консольная консоль c ++ закрыта диспетчером задач? [Дубликат]

Была та же проблема, и это разрешило это для меня (Powershell as admin):

Set-ItemProperty -Path HKLM:\Software\Policies\Microsoft\Windows\PowerShell -Name ExecutionPolicy -Value ByPass 
4
задан Umair 6 October 2009 в 20:04
поделиться

3 ответа

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

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

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

9
ответ дан Ivan Vučica 18 August 2018 в 20:57
поделиться
  • 1
    К сожалению, нельзя перепроектировать приложение. Его 10-летнее устаревшее приложение с несколькими тысячами строк кода. – Umair 6 October 2009 в 20:36

Это зависит от того, выбирает ли пользователь «Завершить задачу» ваше приложение, и вы сможете обработать его .

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

0
ответ дан Mehran 18 August 2018 в 20:57
поделиться

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

0
ответ дан Raj More 18 August 2018 в 20:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: