Я хочу завершить несколько процессов, но я хочу дать каждому процессу возможность сохранить его данные, спросить пользователя о сохранении файла и даже игнорировать запрос на закрытие.Как изящно завершить процесс?
So TerminateProcess
не может быть и речи, так как он мгновенно убивает процесс. Другим способом было бы использовать SendMessage
/PostMessage
, чтобы отправить WM_CLOSE
в главное окно, к сожалению, я ничего не знаю о окнах процессов, у меня есть только идентификатор процесса, поэтому FindWindow
тоже не помогает. Есть ли другой способ найти основные окна процесса?
Другими словами: Есть ли способ прекратить любой процесс грациозно так же, как менеджер задач делает при нажатии на кнопку «End Task»? (а не «Конечный процесс»)
Я предполагаю, что "задача" является верхним уровень (видимый) окном. Таким образом, 'WM_CLOSE' будет отправлен (возможно) на завершение задачи. –
Если вы не разработчик программного обеспечения - просто пользователь Windows - см. [Связанный с ним вопрос о суперпользователе о том, как изящно попросить запущенное приложение завершить работу) (http://superuser.com/questions/959364/on-windows- как-может-я-грациозно-аск-а-процесс-к-прекратить). – unforgettableid
Обратите внимание, что с Windows 8.1 кнопка «Конечная задача» диспетчера задач теперь принудительно завершает выбранное приложение и приводит к потере любой несохраненной работы.Вы можете отредактировать свой вопрос, чтобы это отразить. – unforgettableid