Java Process

  對Process類的簡要說明:

     Process類是一個抽象類,方法都是抽象的,它封裝了一個進程,也就是一個可執行的程序

     該類提供進程的輸入、執行輸出到進程、等待進程的完成和檢查進程的退出狀態及銷燬進程的方法

     ProcessBuilder.start()和Runtime.exec方法創建一個本機進程並返回Process子類的一個實例,該實例可以控制進程並獲取相關的信息

     其它的概要請參考JDK文檔

     下面就開始舉幾個簡單的示例:

     (1)執行簡單的DOS命令,如打開一個記事本

    

Java代碼 複製代碼
  1. package com.iwtxokhtd.other;   
  2.   
  3. import java.io.IOException;   
  4.   
  5. public class ProcessTest {   
  6.   
  7.     public static void main(String[] args) {   
  8.         try {   
  9.                         Process proc=Runtime.getRuntime().exec("notepad");   
  10.         } catch (IOException e) {   
  11.             // TODO Auto-generated catch block   
  12.             e.printStackTrace();   
  13.         }   
  14.   
  15.     }   
  16.   
  17. }  
[java] view plaincopy
  1. package com.iwtxokhtd.other;  
  2.   
  3. import java.io.IOException;  
  4.   
  5. public class ProcessTest {  
  6.   
  7.     public static void main(String[] args) {  
  8.         try {  
  9.                         Process proc=Runtime.getRuntime().exec("notepad");  
  10.         } catch (IOException e) {  
  11.             // TODO Auto-generated catch block  
  12.             e.printStackTrace();  
  13.         }  
  14.   
  15.     }  
  16.   
  17. }  

 

(2)使用它的其它構造方法執行相關的命令,如下例:

 

Java代碼 複製代碼
  1. package com.iwtxokhtd.other;   
  2.   
  3. import java.io.IOException;   
  4.   
  5. public class ProcessTest {   
  6.   
  7.     public static void main(String[] args) {   
  8.         try {   
  9.                
  10.             String exeFullPathName="C:/Program Files/Internet Explorer/IEXPLORE.EXE";   
  11.             String message="www.google.com";   
  12.             String []cmd={exeFullPathName,message};   
  13.             Process proc=Runtime.getRuntime().exec(cmd);   
  14.         } catch (IOException e) {   
  15.             // TODO Auto-generated catch block   
  16.             e.printStackTrace();   
  17.         }   
  18.   
  19.     }   
  20.   
  21. }  
[java] view plaincopy
  1. package com.iwtxokhtd.other;  
  2.   
  3. import java.io.IOException;  
  4.   
  5. public class ProcessTest {  
  6.   
  7.     public static void main(String[] args) {  
  8.         try {  
  9.               
  10.             String exeFullPathName="C:/Program Files/Internet Explorer/IEXPLORE.EXE";  
  11.             String message="www.google.com";  
  12.             String []cmd={exeFullPathName,message};  
  13.             Process proc=Runtime.getRuntime().exec(cmd);  
  14.         } catch (IOException e) {  
  15.             // TODO Auto-generated catch block  
  16.             e.printStackTrace();  
  17.         }  
  18.   
  19.     }  
  20.   
  21. }  

 

執行上述命令可以打開Google網站

(3)列出系統正在運行的所有進程信息

  

Java代碼 複製代碼
  1. package com.iwtxokhtd.other;   
  2.   
  3. import java.io.BufferedReader;   
  4. import java.io.IOException;   
  5. import java.io.InputStreamReader;   
  6.   
  7. public class ListAllProcessTest {   
  8.   
  9.     //列出所有的進程信息   
  10.     public static void main(String[] args) {   
  11.         BufferedReader br=null;   
  12.         try {   
  13.             Process proc=Runtime.getRuntime().exec("tasklist");   
  14.             br=new BufferedReader(new InputStreamReader(proc.getInputStream()));   
  15.             @SuppressWarnings("unused")   
  16.             String line=null;   
  17.             System.out.println("打印所有正在運行的進程信息");   
  18.             while((line=br.readLine())!=null){   
  19.                 System.out.println(br.readLine());   
  20.             }   
  21.         } catch (IOException e) {   
  22.             e.printStackTrace();   
  23.         }finally{   
  24.             if(br!=null){   
  25.                 try {   
  26.                     br.close();   
  27.                 } catch (Exception e) {   
  28.                     e.printStackTrace();   
  29.                 }   
  30.             }   
  31.         }   
  32.            
  33.   
  34.     }   
  35.   
  36. }  
[java] view plaincopy
  1. package com.iwtxokhtd.other;  
  2.   
  3. import java.io.BufferedReader;  
  4. import java.io.IOException;  
  5. import java.io.InputStreamReader;  
  6.   
  7. public class ListAllProcessTest {  
  8.   
  9.     //列出所有的進程信息  
  10.     public static void main(String[] args) {  
  11.         BufferedReader br=null;  
  12.         try {  
  13.             Process proc=Runtime.getRuntime().exec("tasklist");  
  14.             br=new BufferedReader(new InputStreamReader(proc.getInputStream()));  
  15.             @SuppressWarnings("unused")  
  16.             String line=null;  
  17.             System.out.println("打印所有正在運行的進程信息");  
  18.             while((line=br.readLine())!=null){  
  19.                 System.out.println(br.readLine());  
  20.             }  
  21.         } catch (IOException e) {  
  22.             e.printStackTrace();  
  23.         }finally{  
  24.             if(br!=null){  
  25.                 try {  
  26.                     br.close();  
  27.                 } catch (Exception e) {  
  28.                     e.printStackTrace();  
  29.                 }  
  30.             }  
  31.         }  
  32.           
  33.   
  34.     }  
  35.   
  36. }  

 

(4)判斷一個具體的進程是否正在運行,如下例:

Java代碼 複製代碼
  1. package com.iwtxokhtd.other;   
  2. import java.io.BufferedReader;   
  3. import java.io.InputStreamReader;   
  4. public class FindProcessExeTest   
  5. {   
  6.     public static void main(String []args){   
  7.            
  8.         if(findProcess("QQ.exe")){   
  9.             System.out.println("------判斷指定的進程是否在運行------");   
  10.             System.out.println("QQ.exe該進程正在運行!");   
  11.         }else{   
  12.             System.out.println("------判斷指定的進程是否在運行------");   
  13.             System.out.println("QQ.exe該進程沒有在運行!");   
  14.         }   
  15.   
  16.     }   
  17.     public static boolean findProcess(String processName){   
  18.         BufferedReader br=null;   
  19.         try{   
  20.               
  21.             //下面這句是列出含有processName的進程圖像名   
  22.             Process proc=Runtime.getRuntime().exec("tasklist /FI /"IMAGENAME eq "+processName+"/"");   
  23.             br=new BufferedReader(new InputStreamReader(proc.getInputStream()));   
  24.             String line=null;   
  25.             while((line=br.readLine())!=null){   
  26.                 //判斷指定的進程是否在運行   
  27.                 if(line.contains(processName)){   
  28.                     return true;   
  29.                 }   
  30.             }   
  31.                
  32.             return false;   
  33.         }catch(Exception e){   
  34.             e.printStackTrace();   
  35.             return false;   
  36.         }finally{   
  37.             if(br!=null){   
  38.                 try{   
  39.                     br.close();   
  40.                 }catch(Exception ex){   
  41.                 }   
  42.             }   
  43.                
  44.         }   
  45.     }   
  46. }  
[java] view plaincopy
  1. package com.iwtxokhtd.other;  
  2. import java.io.BufferedReader;  
  3. import java.io.InputStreamReader;  
  4. public class FindProcessExeTest  
  5. {  
  6.     public static void main(String []args){  
  7.           
  8.         if(findProcess("QQ.exe")){  
  9.             System.out.println("------判斷指定的進程是否在運行------");  
  10.             System.out.println("QQ.exe該進程正在運行!");  
  11.         }else{  
  12.             System.out.println("------判斷指定的進程是否在運行------");  
  13.             System.out.println("QQ.exe該進程沒有在運行!");  
  14.         }  
  15.   
  16.     }  
  17.     public static boolean findProcess(String processName){  
  18.         BufferedReader br=null;  
  19.         try{  
  20.              
  21.             //下面這句是列出含有processName的進程圖像名  
  22.             Process proc=Runtime.getRuntime().exec("tasklist /FI /"IMAGENAME eq "+processName+"/"");  
  23.             br=new BufferedReader(new InputStreamReader(proc.getInputStream()));  
  24.             String line=null;  
  25.             while((line=br.readLine())!=null){  
  26.                 //判斷指定的進程是否在運行  
  27.                 if(line.contains(processName)){  
  28.                     return true;  
  29.                 }  
  30.             }  
  31.               
  32.             return false;  
  33.         }catch(Exception e){  
  34.             e.printStackTrace();  
  35.             return false;  
  36.         }finally{  
  37.             if(br!=null){  
  38.                 try{  
  39.                     br.close();  
  40.                 }catch(Exception ex){  
  41.                 }  
  42.             }  
  43.               
  44.         }  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章