2016-07-26 129 views
-1

有三個應用程序main.exe(C++),one.exe(C++)和two.exe(.net)。如何從另一個應用程序終止一個應用程序

我想從main.exe中終止one.exe和two.exe,如果它們正在運行。

+5

[如何在C++(Win32)中有效殺死進程?](http://stackoverflow.com/questions/1916574/how-to-effectively-kill-a-process-in-c-win32 ) –

+2

告訴我們更多關於這些項目的信息。正確的答案不一定合適。 'WM_CLOSE'只能用於GUI程序,即使發送'WM_CLOSE'也不會真的終止程序,而只是觸發一個「你確定嗎?」對話。 'TerminateProcess'是相當粗糙的,可能會導致各種問題,想象你的程序正在更新數據庫的過程中,它突然被殺死;這可能會使數據庫處於中間狀態甚至損壞數據庫。你有「one.exe」和「two.exe」的源代碼嗎? –

回答

0

正常的GUI應用程序?只需發送他們WM_CLOSE

+0

這不會終止進程。這是一個請求,任何應用程序都可以高興地忽略它。 – IInspectable

0

如果你有進程ID爲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

如果是GUI應用程序,則可以向其他應用程序發送WM_CLOSE消息。

或者如果你想殺死另一個進程,那麼使用TerminateProcess()函數。