基本上,如果我通過啓動 - >附件 - >記事本啓動記事本,那麼我的Java程序應該關閉它。 這可能嗎? 如果不是Java,還有其他語言?關閉Java的另一個應用程序,但不是由現在的Java應用程序啓動
1
A
回答
6
如果你知道下面的代碼過程中使用的PID殺從Java應用程序:
Runtime.getRuntime().exec("taskkill /F /PID <process_id>");
地方,就是你的進程id/F用來強制殺。注意,這隻適用於使用Windows的情況。
從這裏你可以擴展這個工作來動態獲取進程ID和殺死而不是硬編碼。
使用系統屬性os.name
您可以獲取os的名稱並相應地更改命令。
2
除了上面的帖子,你可以過濾掉PID與此代碼(鴕鳥政策知道,如果它可以工作更簡單)
此代碼列表中的所有進程,並可以過濾掉一些特定一個,如果你想要
package runtime;
import java.util.Scanner;
public class Process_Check {
public static void main(String[] args) throws Exception {
Processes.ALL_PROCESSES.listProcesses();
}
public static enum Processes implements IProcessListingStrategy {
ALL_PROCESSES;
private IProcessListingStrategy processListing = selectProcessListingStrategy();
public void listProcesses() throws Exception {
processListing.listProcesses();
}
private IProcessListingStrategy selectProcessListingStrategy() {
//todo add support for mac ...
return isWindows() ? new WinProcessListingStrategy() : new LinuxProcessListingStrategy();
}
private static boolean isWindows() {
return System.getProperty("os.name").toLowerCase().indexOf("win") >= 0;
}
}
static interface IProcessListingStrategy {
void listProcesses() throws Exception;
}
static abstract class AbstractNativeProcessListingStrategy implements IProcessListingStrategy {
public void listProcesses() throws Exception {
Process process = makeProcessListingProcessBuilder().start();
Scanner scanner = new Scanner(process.getInputStream());
while (scanner.hasNextLine()) {
System.out.println(scanner.nextLine());
}
scanner.close();
process.waitFor();
}
protected abstract ProcessBuilder makeProcessListingProcessBuilder();
}
static class WinProcessListingStrategy extends AbstractNativeProcessListingStrategy {
@Override
protected ProcessBuilder makeProcessListingProcessBuilder() {
return new ProcessBuilder("cmd", "/c", "tasklist");
}
}
static class LinuxProcessListingStrategy extends AbstractNativeProcessListingStrategy {
@Override
protected ProcessBuilder makeProcessListingProcessBuilder() {
return new ProcessBuilder("ps", "-e");
}
}
}
相關問題
- 1. 關閉一個Java應用程序並啓動另一個應用程序
- 2. 從另一個Java應用程序啓動Java應用程序
- 3. 從另一個應用程序啓動Java應用程序
- 4. 啓動通過一個過程在Java的應用程序,但不關閉父應用程序?
- 5. 關閉在java應用程序中的Javafx類應用程序
- 6. 從另一個java應用程序控制java應用程序
- 7. QProcess不啓動Windows應用程序下的Java應用程序
- 8. 在Mac上啓動Java應用程序的另一個實例
- 9. 從另一個Java應用程序啓動Java類
- 10. 啓動應用程序Java
- 11. 瞭解應用程序是否由另一個應用程序啓動
- 12. 從另一個容器啓動的調用java應用程序
- 13. 從一個Java應用程序啓動多個Java應用程序
- 14. OSX LaunchAgent的應用程序,啓動另一個應用程序
- 15. 從java應用程序啓動java webstart應用程序
- 16. 在另一個應用程序中啓動應用程序
- 17. 如何在不重新啓動的情況下關閉另一個應用程序的Win應用程序?
- 18. 我想關閉一個由java程序從java啓動的windows進程
- 19. 關閉另一個應用程序
- 20. Java應用程序在關閉時如何重新啓動?
- 21. 從第一個應用程序啓動第二個應用程序,然後關閉第一個應用程序
- 22. 如何在Mac上從Java啓動另一個應用程序
- 23. Java Web應用程序 - 應用程序啓動時的LoadLibrary
- 24. 隱藏Java應用程序啓動的窗口應用程序?
- 25. Java應用程序顯示啓動應用程序的進度
- 26. 啓動另一個應用程序,但沒有新的進程
- 27. Nativescript - 從Nativescript應用程序啓動另一個應用程序
- 28. iPhone 5應用程序啓動另一個應用程序
- 29. 從另一個rcp應用程序啓動rcp應用程序
- 30. tizen web應用程序,啓動另一個web應用程序
'kill -9'也適用於一些* nix口味。 –
Chris
謝謝@Chris。 :) –