您的位置:首页 > 编程语言 > Java开发

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

2015-01-01 20:55 375 查看
代码:

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:

import java.io.BufferedReader;  

import java.io.IOException;  

import java.io.InputStreamReader;  

import javax.swing.JOptionPane;  

  

public class TestRT {  

    public final static int END_MARK = 0;  

  

    /** 

     * 使用Runtime对象的exec方法,运行cmd命令。 

     */  

    public static void main(String[] args) {  

        Runtime rt = Runtime.getRuntime();  

        try {         

            Process pr = rt.exec("ping www.hao123.com "); //运行cmd命令  

            BufferedReader br = new BufferedReader(new InputStreamReader(pr.getInputStream()));  

            String s = br.readLine();  

            String temp = "" ;  

            while(null != s ){  

                if(!"".equals(s.trim()))  temp = s;  

                System.out.println(s);  

                s = br.readLine();  

            }  

            br.close();  

            //导致当前线程等待,如果必要,一直要等到由该 Process 对象表示的进程已经终止。  

            pr.waitFor();   

            //此 Process 对象表示的子进程的出口值。根据惯例,值 0 表示正常终止。  

            if (END_MARK == pr.exitValue()) {  

                JOptionPane.showMessageDialog(null, temp );  

            }  

        } catch (IOException e) {  

            e.printStackTrace();  

        } catch (InterruptedException e) {  

            e.printStackTrace();  

        }  

    }  

}  
   解释: 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.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: