首页 > 解决方案 > 显示在系统上运行的进程,但在所有计算机上,而不仅仅是在我的计算机上

问题描述

这些指令显示在我的系统上运行的“操作”,但这些指令不在其他系统上运行。那么我如何使用“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();
               }

标签: javajavafx

解决方案


也许ProcessHandle#allProcesses()可以帮助你(感谢@slaw的指针)。

如果它没有提供您需要的信息,并且除非您找到可以为所有支持的平台解决此问题的 3rd 方库,否则您可能需要以下步骤:

  • 定义一个抽象平台特定代码的接口(例如提供一个方法getTaskListCommand
  • 为每个受支持的平台编写此接口的实现(例如getTaskListCommand,使用您当前使用的命令实现 for Windows System.getenv("windir") +"\\system32\\"+"tasklist.exe":)
  • 加载与平台匹配的实现,例如在ServiceLoader的帮助下

推荐阅读