2016-07-26 11 views
-1

Es gibt drei Anwendungen main.exe (C++), one.exe (C++) und two.exe (.net).So beenden Sie eine Anwendung aus einer anderen Anwendung

Ich möchte One.exe und two.exe von Main.exe beenden, wenn sie ausgeführt werden.

+5

Mögliche Duplikate von [Wie effektiv einen Prozess in C++ (Win32) zu töten?] (Http://stackoverflow.com/questions/1916574/how-to-effectively-kill-a-process-in-c-win32) –

+2

Erzähl uns mehr über diese Programme. Die folgenden Antworten sind zwar korrekt, aber nicht unbedingt angemessen. 'WM_CLOSE' funktioniert nur für GUI-Programme und selbst dann kann' WM_CLOSE' das Programm nicht beenden, sondern nur ein "Are you sure?" Dialog. 'TerminateProcess' ist ziemlich grob und kann alle Arten von Problemen verursachen, stellen Sie sich vor, Ihr Programm ist gerade dabei, eine Datenbank zu aktualisieren, und es wird plötzlich gelöscht; Dies kann dazu führen, dass Ihre Datenbank in einem intransparenten Zustand bleibt oder sie sogar beschädigt. Haben Sie den Quellcode 'one.exe' und' two.exe'? –

Antwort

0

Normale GUI-Anwendungen? Sende sie einfach an WM_CLOSE.

+0

Das beendet einen Prozess nicht. Es ist eine Anfrage, die jede Anwendung gerne ignorieren kann. – IInspectable

0

Wenn Sie Process ID für one.exe und two.exe haben, können Sie Prozess behandeln und TerminateProcess Funktion verwenden. Hier ist das Codebeispiel:

HANDLE hProcess = OpenProcess(PROCESS_TERMINATE, FALSE, dwProcessId); 
if (hProcess == NULL) 
{ 
    return; 
} 

UINT uExitCode; 
BOOL result = TerminateProcess(hProcess, uExitCode); 
CloseHandle(hProcess); 
0

Wenn es eine GUI-Anwendung ist, können Sie eine WM_CLOSE-Nachricht an die andere Anwendung senden.

Oder wenn Sie den anderen Prozess beenden möchten, verwenden Sie die TerminateProcess() - Funktion.