Ist es möglich, einen Prozess in einer Java-Anwendung zu beenden?

8

In einer Java-Anwendung:

%Vor%

Durch Aufruf von destroy wird der Prozess einfach beendet und es können keine Benutzerbereinigungen oder Exit-Codes ausgeführt werden. Ist es möglich, einen Prozess eine Nachricht WM_CLOSE oder ähnliches zu senden?

    
Chris Haines 05.06.2009, 10:37
quelle

5 Antworten

3

Sie können Process.getOutputStream um eine Nachricht an die Standardeingabe Ihrer App zu senden, zB:

%Vor%

Das bedeutet natürlich, dass Sie sich die stdin in der Windows App anhören müssen.

    
Zarkonnen 05.06.2009, 10:55
quelle
3

Sie können es mit JNA versuchen, indem Sie user32.dll importieren und eine Schnittstelle definieren, die mindestens CloseWindow

definiert     
dfa 05.06.2009 10:58
quelle
3

Mit JNAs jna.jar und process.jar (von Ссылка ) senden Sie eine WM_CLOSE-Nachricht wie folgt:

%Vor%     
Tony Tonev 28.04.2011 22:34
quelle
2

Nicht ohne auf nativen Code zurückzugreifen. Process.destroy() verursacht eine erzwungene Beendigung. Unter Windows entspricht dies dem Aufruf von TerminateProcess() . Unter Unix ist es gleichbedeutend mit SIGQUIT und bewirkt, dass die Anwendung Core-Dump ausführt.

    
Matthew Murdoch 05.06.2009 11:04
quelle
1

Eine schmutzige Lösung wäre, dass Ihre MyWindowsApp ihren Bezeichner irgendwo als Datei registriert und eine andere Windows-Anwendung erstellt, die WM_CLOSE (nennen wir sie MyWindowsAppCloser) an eine andere Anwendung sendet.

Damit würden Sie den folgenden Code mit Java 1.6 programmieren

%Vor%     
Reginaldo 05.06.2009 11:03
quelle

Tags und Links