Существует три приложения main.exe (C++), one.exe (C++) и two.exe (.net).Как завершить одно приложение из другого приложения
Я хочу закрыть one.exe и two.exe из main.exe, если они запущены.
Существует три приложения main.exe (C++), one.exe (C++) и two.exe (.net).Как завершить одно приложение из другого приложения
Я хочу закрыть one.exe и two.exe из main.exe, если они запущены.
Обычные графические приложения? Просто отправьте их WM_CLOSE
.
Это не завершает процесс. Это запрос, который любое приложение может с радостью игнорировать. – IInspectable
Если у вас есть идентификатор процесса для one.exe и two.exe, вы можете получить дескриптор процесса и использовать функцию TerminateProcess
. Вот пример кода:
HANDLE hProcess = OpenProcess(PROCESS_TERMINATE, FALSE, dwProcessId);
if (hProcess == NULL)
{
return;
}
UINT uExitCode;
BOOL result = TerminateProcess(hProcess, uExitCode);
CloseHandle(hProcess);
Если это приложение с графическим интерфейсом, вы можете отправить сообщение WM_CLOSE в другое приложение.
Или если вы хотите убить другой процесс, используйте функцию TerminateProcess().
Возможный дубликат [Как эффективно убить процесс на C++ (Win32)?] (Http://stackoverflow.com/questions/1916574/how-to-effectively-kill-a-process-in-c-win32) –
Расскажите подробнее об этих программах. Ответы ниже, если они правильные, не обязательно подходят. 'WM_CLOSE' работает только для графических программ, и даже тогда отправка' WM_CLOSE' может фактически не прекратить работу программы, а просто вызвать «Вы уверены?». Диалог. «TerminateProcess» довольно груб и может вызвать всевозможные проблемы, представьте, что ваша программа находится в середине обновления базы данных и внезапно ее убивают; это может оставить вашу базу данных в неопределенном состоянии или даже повредить ее. У вас есть исходный код 'one.exe' и' two.exe'? –