2017-04-09 1 views
1

Je me demande comment je trouve l'ID de processus d'un autre programme. Quand j'ai commencé à programmer mon programme, je pensais que le processus d'un .exe restait le même, mais quand mon programme a échoué, j'ai revérifié et j'ai réalisé que ça avait changé!Java: Comment trouver l'ID de processus d'un autre programme?

J'ai essayé de nombreuses manières différentes à travers l'Internet mais aucun d'entre eux n'avait un programme non-java comme cible.

Voici mon code actuel:

try { 
         System.out.println("DefaultButton Pressed"); 
         Runtime.getRuntime().exec("taskkill /F /PID "+processID); 
        } catch (IOException e) { 
         // TODO Auto-generated catch block 
         System.out.println("Failed to kill the process"); 
         e.printStackTrace(); 
        } 

Ce code TRYS pour tuer le processus lorsque j'appuie sur un bouton

j'avais code qui a essayé de saisir le PID, mais il a aussi échoué

J'ai essayé ceci pour attraper le PID, mais il attrape l'identification de mon processus (duh). J'ai essayé de changer le code pour être un programme différent de Java non mais le code ne fonctionne toujours pas.

String processID= ManagementFactory.getRuntimeMXBean().getName(); 
System.out.println("Process ID for this app = " + processID); 

encore ce code est de saisir leur propre code.

Je ne peux pas l'ajuster au travail. Puis-je même obtenir un PID d'un autre processus non Java?

EDIT 1 Voici mon nouveau code

Process processIdRaw; 
      try{ 
       processIdRaw = Runtime.getRuntime().exec("tasklist /m | find \"<processname>" "); 
       System.out.println("Aquired PID"); 

      } 
      catch(IOException e){ 
       e.printStackTrace(); 
      } 
      int processID = Integer.parseInt(processIdRaw); 
      System.out.println("PID:"+processID); 

Ce code est avant mon autre code. L'autre code vient après ce code ci-dessus.

Je pense que le type Process ne fonctionne pas avec int processID = Integer.parseInt(processIdRaw);

J'ai ajouté le .parseInt parce que je pensais qu'il trouverait le numéro de la sortie.

Erreurs sur avant à cause du type Process

Répondre

0

Je ne pouvais pas trouver un moyen de faire fonctionner le PID mais!

Runtime.getRuntime().exec("taskkill /F /IM <processname>.exe") 

fonctionne!

try { 
         System.out.println("DefaultButton Pressed"); 
         Runtime.getRuntime().exec("taskkill /F /IM <processname>"); 
        } catch (IOException e) { 
         // TODO Auto-generated catch block 
         System.out.println("Failed to kill the process"); 
         e.printStackTrace(); 
        } 

Pour trouver le nom du processus

1: Exécutez le programme que vous voulez tuer

2: cde

3: Exécutez la commande tasklist

4: Grab le nom du processus