java获取程序运行时RT打开qq

代码:

import java.io.IOException;  


public class TestRT {  
  
    /** 
     * 使用Runtime对象的exec方法,调用外部exe文件。 
     */  
    public static void main(String[] args) {  
        Runtime rt = Runtime.getRuntime();  
        try {  
            rt.exec("mspaint.exe");    //打开画图程序
            rt.exec("C:\\Program Files (x86)\\Tencent\\QQ\\QQProtect\\Bin\\QQProtect.exe");   //"C:\\Program Files 

                                                                                                                  //(x86)\\Tencent\\QQ\\QQProtect\\Bin\\QQProtect.exe"
        } catch (IOException e) {  
            e.printStackTrace();  
        }  
    }  
}  

说明:

     每个java运行程序都有一个Runtime运行实例,作用是使得应用程序与当前的运行环境对接。通过getRuntime()获取实例。

     引用程序不能创建该实例(环境嘛,只能获取)

   1. static Runtime getRuntime() 
          返回与当前 Java 应用程序相关的运行时对象。 
  2. Process exec(String command) 
          在单独的进程中执行指定的字符串命令。
 



代码2:

  1. import java.io.BufferedReader;  
  2. import java.io.IOException;  
  3. import java.io.InputStreamReader;  
  4. import javax.swing.JOptionPane;  
  5.   
  6. public class TestRT {  
  7.     public final static int END_MARK = 0;  
  8.   
  9.     /** 
  10.      * 使用Runtime对象的exec方法,运行cmd命令。 
  11.      */  
  12.     public static void main(String[] args) {  
  13.         Runtime rt = Runtime.getRuntime();  
  14.         try {         
  15.             Process pr = rt.exec("ping www.hao123.com "); //运行cmd命令  
  16.             BufferedReader br = new BufferedReader(new InputStreamReader(pr.getInputStream()));  
  17.             String s = br.readLine();  
  18.             String temp = "" ;  
  19.             while(null != s ){  
  20.                 if(!"".equals(s.trim()))  temp = s;  
  21.                 System.out.println(s);  
  22.                 s = br.readLine();  
  23.             }  
  24.             br.close();  
  25.             //导致当前线程等待,如果必要,一直要等到由该 Process 对象表示的进程已经终止。  
  26.             pr.waitFor();   
  27.             //此 Process 对象表示的子进程的出口值。根据惯例,值 0 表示正常终止。  
  28.             if (END_MARK == pr.exitValue()) {  
  29.                 JOptionPane.showMessageDialog(null, temp );  
  30.             }  
  31.         } catch (IOException e) {  
  32.             e.printStackTrace();  
  33.         } catch (InterruptedException e) {  
  34.             e.printStackTrace();  
  35.         }  
  36.     }  
  37. }  
   解释: Process.waitFor(),该方法会导致当前process堵塞,直到process线程推出,然后继续运行waitFor()后面的方法。
exp:
public class ProcessDemo {

   public static void main(String[] args) {
      try {
         // create a new process
         System.out.println("Creating Process...");
         Process p = Runtime.getRuntime().exec("notepad.exe");

         // cause this process to stop until process p is terminated

         p.waitFor();//导致main主线程堵塞,直到Process p中断terminated,继续主线程继续运行下去

         // when you manually close notepad.exe program will continue here (导致mian主线程堵塞,直到)
         System.out.println("Waiting over.");

      } catch (Exception ex) {
         ex.printStackTrace();
      }

   }
}
result:
Creating Process... 
(堵塞中。。。直到关闭note 输出waiting over,此时如果调用Process.exitValue(),可以得到0(程序正常结束) 1(非正常中断))
Waiting over.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章