java判断一个程序是否启动 ,如果该程序已经启动则不打开,如果该程序未启动,则打开
时间: 2023-12-10 09:42:32 浏览: 27
可以使用 Java 的 `java.lang.management` 包中的 `RuntimeMXBean` 类来实现。
具体思路如下:
1. 获取当前 Java 进程的 PID。
2. 利用 `Runtime` 类执行 `tasklist` 命令,获取所有正在运行的进程信息。
3. 在获取到的进程信息中查找是否有与当前 Java 进程的 PID 相同的进程。
4. 如果找到了相同的进程,则说明该程序已经启动,不需要再次打开;否则,打开该程序。
以下是示例代码:
```java
import java.io.IOException;
import java.lang.management.ManagementFactory;
public class ProgramLauncher {
public static void main(String[] args) {
String processName = "myprogram.exe"; // 需要启动的程序名称
int pid = getProcessId(); // 获取当前 Java 进程的 PID
boolean isRunning = isProcessRunning(pid, processName); // 判断程序是否已经启动
if (!isRunning) {
try {
Runtime.getRuntime().exec(processName); // 打开程序
} catch (IOException e) {
e.printStackTrace();
}
}
}
// 获取当前 Java 进程的 PID
private static int getProcessId() {
String processName = ManagementFactory.getRuntimeMXBean().getName();
return Integer.parseInt(processName.substring(0, processName.indexOf("@")));
}
// 判断程序是否已经启动
private static boolean isProcessRunning(int pid, String processName) {
try {
Process process = Runtime.getRuntime().exec("tasklist");
try (BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()))) {
String line;
while ((line = reader.readLine()) != null) {
if (line.contains(processName) && line.contains(String.valueOf(pid))) {
return true; // 找到了相同的进程
}
}
}
} catch (IOException e) {
e.printStackTrace();
}
return false; // 没有找到相同的进程
}
}
```
需要注意的是,该方法只能在 Windows 系统上使用,因为 `tasklist` 命令只在 Windows 上可用。如果需要在其他操作系统上使用,需要使用相应的命令来获取正在运行的进程信息。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)