L'implémentation Java détecte si un programme s'exécute sous le chemin local spécifié

Le projet a besoin de réveiller le programme de bureau local via un lien hypertexte de page Web, et il y a un petit bogue qui ouvre à plusieurs reprises le programme de bureau. Une interface doit être ouverte en arrière-plan pour déterminer si le programme de bureau local est ouvert. Il peut être réalisé par la méthode simple suivante.

Pour détecter si un programme s'exécute sous le chemin local spécifié, vous pouvez utiliser la classe Java ProcessBuilder pour y parvenir. Voici un exemple de code :

Prenons l'exemple du logiciel distant 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;
    }
}

Résultats de test

 Description de la logique de mise en œuvre :

Utilisez-le ProcessBuilderpour exécuter une commande du système d'exploitation afin d'obtenir une liste des programmes en cours d'exécution. Dans le système Windows, utilisez tasklistla commande pour obtenir la liste des programmes ; dans le système non-Windows, utilisez ps -ela commande pour obtenir la liste des programmes.

Ensuite, parcourez la liste de programmes obtenue pour déterminer si le nom du programme à détecter est inclus, et s'il est inclus, cela signifie que le programme est en cours d'exécution.

Veuillez modifier programPathla valeur de la variable en fonction de la situation réelle afin qu'elle pointe vers le chemin du programme à détecter.

Je suppose que tu aimes

Origine blog.csdn.net/weixin_39709134/article/details/131857449
conseillé
Classement