Java实现检测本地指定路径下某一个程序是否在运行

项目有一个需求需要通过网页超链接唤醒本地桌面程序,有一个小bug是重复打开桌面程序。需要后台开一个接口来判断本地桌面程序是否打开。可以通过以下简单的方法来实现。

要检测本地指定路径下某一个程序是否在运行,可以使用Java的ProcessBuilder类来实现。以下是一个示例代码:

拿todesk远程软件来举例

import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
 
public class ProgramRunningCheck {
 
    public static void main(String[] args) {
        String programPath = "C:\Program Files (x86)\ToDesk\ToDesk.exe"; // 要检测的程序路径
 
        if (isProgramRunning(programPath)) {
            System.out.println(programPath + " is running.");
        } else {
            System.out.println(programPath + " is not running.");
        }
    }
 
    public static boolean isProgramRunning(String programPath) {
        boolean isRunning = false;
        String os = System.getProperty("os.name").toLowerCase();
 
        File programFile = new File(programPath);
        String programName = programFile.getName();
 
        try {
            ProcessBuilder processBuilder;
            if (os.contains("win")) {
                // Windows系统
                processBuilder = new ProcessBuilder("tasklist");
            } else {
                // 非Windows系统
                processBuilder = new ProcessBuilder("ps", "-e");
            }
 
            Process process = processBuilder.start();
            InputStream inputStream = process.getInputStream();
            BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
 
            String line;
            while ((line = reader.readLine()) != null) {
                if (line.contains(programName)) {
                    isRunning = true;
                    break;
                }
            }
 
            reader.close();
            inputStream.close();
            process.destroy();
 
        } catch (IOException e) {
            e.printStackTrace();
        }
 
        return isRunning;
    }
}

测试结果

 实现逻辑说明:

使用ProcessBuilder来执行操作系统命令来获取运行中的程序列表。在Windows系统中,使用tasklist命令获取程序列表;在非Windows系统中,使用ps -e命令获取程序列表。

然后遍历获取到的程序列表,判断是否包含要检测的程序名,如果包含则表示该程序正在运行。

请根据实际情况修改programPath变量的值,使其指向要检测的程序路径。

猜你喜欢

转载自blog.csdn.net/weixin_39709134/article/details/131857449
今日推荐