2016-07-26 1 views
-1

Существует три приложения main.exe (C++), one.exe (C++) и two.exe (.net).Как завершить одно приложение из другого приложения

Я хочу закрыть one.exe и two.exe из main.exe, если они запущены.

+5

Возможный дубликат [Как эффективно убить процесс на C++ (Win32)?] (Http://stackoverflow.com/questions/1916574/how-to-effectively-kill-a-process-in-c-win32) –

+2

Расскажите подробнее об этих программах. Ответы ниже, если они правильные, не обязательно подходят. 'WM_CLOSE' работает только для графических программ, и даже тогда отправка' WM_CLOSE' может фактически не прекратить работу программы, а просто вызвать «Вы уверены?». Диалог. «TerminateProcess» довольно груб и может вызвать всевозможные проблемы, представьте, что ваша программа находится в середине обновления базы данных и внезапно ее убивают; это может оставить вашу базу данных в неопределенном состоянии или даже повредить ее. У вас есть исходный код 'one.exe' и' two.exe'? –

ответ

0

Обычные графические приложения? Просто отправьте их WM_CLOSE.

+0

Это не завершает процесс. Это запрос, который любое приложение может с радостью игнорировать. – IInspectable

0

Если у вас есть идентификатор процесса для 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); 
0

Если это приложение с графическим интерфейсом, вы можете отправить сообщение WM_CLOSE в другое приложение.

Или если вы хотите убить другой процесс, используйте функцию TerminateProcess().