2016-07-26 127 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()函数。