Здравствуйте, egvos4, Вы писали:
E>Как пишет Джефри Рихтер, не желательно принудительно уничтожать процесс из другого процесса путем вызова TerminateProcess. Желательно, чтобы сам первоначальный процесс вызвал у себя ExitProcess и корректно завершился. Соответственно вопрос в том как правильно передать команду процессу, в моем случае одному из четырех запущенных браузеров для их корректного закрытия. Например как-то передать WM_CLOSE? Есть идеи?
WM_CLOSE эквивалентен нажатию на кнопку "закрыть" в правом углу окна.
Что еще вовсе не означает завершение всей программы. Например, браузер запустился и
показывает пользователю диалог: "данная программа не является браузером по умолчанию",
предлагая сделать ее таковой. WM_CLOSE закроет это окно, а основное окно останется висеть.
TerminateProcess нежелателен тем, что после него данные, которыми оперировала программа,
могут остаться в несогласованном состоянии. Точно также, как и в случае аварийного завершения.
Но с другой стороны, TerminateProcess дает наиболее сильную гарантию завершения процесса и
если альтернатив не видно, я бы использовал эту функцию, не особо стесняясь.