Показать процессы, которые выполняются в системе, но на всех компьютерах, а не только на моем. - PullRequest
0 голосов
/ 06 мая 2020

Эти инструкции показывают «операции», которые выполняются в моей системе, но эти инструкции не выполняются в других системах. Итак, как я могу использовать «ProcessHandler» или любой другой способ для инструкций для запуска «во всех системах» (чтобы быть решением для всех систем, на которых будет работать приложение).

Или в целом: Как я могу использовать «ProcessHandler», чтобы отобразить «все процессы», которые выполняются в моей системе и в другой системе? (когда я беру эти инструкции и запускаю их в другой системе, я хочу работать) Я хочу, чтобы эти инструкции выполнялись на разных компьютерах с другой системой , Как я могу это сделать?

            public void proc1(ActionEvent event) throws IOException {        
            try 
            {
            FileReader reader = new FileReader(tt1.getText().replace(':', '-')+".txt");
            BufferedReader bufferedReader = new BufferedReader(reader);
            String line;
            String proc="";
            while ((line=bufferedReader.readLine()) != null) {
            proc=proc+"\n"+line;
            }
            showMessageDialog(null,proc);    
            reader.close();
            }
            catch (IOException e) 
            {
            showMessageDialog(null, "No Processes to view");
            }
            }
             //get Process
              s="";
              try {
              String line;
              Process p = Runtime.getRuntime().exec
              (System.getenv("windir") +"\\system32\\"+"tasklist.exe");
              BufferedReader input =
                new BufferedReader(new InputStreamReader(p.getInputStream()));           
              while ((line = input.readLine()) != null) {
              //System.out.println(line); //<-- Parse data here.
              s=s+"\n"+line;
              }
              input.close();
              } 
              catch (Exception err) {
               err.printStackTrace();
               }

1 Ответ

1 голос
/ 07 мая 2020

Может быть, ProcessHandle # allProcesses () может помочь вам в этом (спасибо @slaw за указатель).

Если он не предоставляет нужную информацию, и если вы не найдете Сторонняя библиотека, которая решает эту проблему для всех ваших поддерживаемых платформ, вам, вероятно, потребуются следующие шаги:

  • определить интерфейс, который абстрагирует код c, специфичный для платформы (например, предоставить метод getTaskListCommand )
  • напишите реализацию этого интерфейса для каждой поддерживаемой платформы (например, реализуйте getTaskListCommand для Windows с помощью команды, которую вы сейчас используете: System.getenv("windir") +"\\system32\\"+"tasklist.exe")
  • загрузить реализацию который соответствует платформе, например, с помощью ServiceLoader
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...