现在的位置: 首页 > 综合 > 正文

Runtime类调用外部程序

2014年10月05日 ⁄ 综合 ⁄ 共 4661字 ⁄ 字号 评论关闭

请问能不能实现像在  “运行”窗口  里键入一行url,然后依靠文件关联打开指定文件呢。  
 
---------------------------------------------------------------  
 
String  path  =  "e://Project1.exe";  
Runtime.getRuntime().exec("cmd  /c  start  "  +  path);  
---------------------------------------------------------------  
 
http://www.rgagnon.com/javadetails/java-0014.html  
Execute  an  external  program  
This  example  will  capture  the  output  (from  stdio)  of  an  external  program.  import  java.io.*;  
public  class  CmdExec  {  
   public  CmdExec(String  cmdline)  {  
       try  {  
         String  line;  
         Process  p  =  Runtime.getRuntime().exec(cmdline);  
         BufferedReader  input  =    
             new  BufferedReader  
                 (new  InputStreamReader(p.getInputStream()));  
         while  ((line  =  input.readLine())  !=  null)  {  
             System.out.println(line);  
             }  
         input.close();  
         }    
       catch  (Exception  err)  {  
         err.printStackTrace();  
         }  
     }  
 
public  static  void  main(String  argv[])  {  
   new  CmdExec("myprog.bat");  
   }  
}  
 
   
[myprog.bat]  
echo  hello  world!  
 
   
NOTE  1:  Reading  a  BAT  file  output  containing  the  dir  command  may  hang.  I  don't  know  why...    
NOTE  2:  To  make  a  shortcut  :  Create  a  shortcut  to  CmdExec.class.  Go  in  the  shortcut  properties  and  change  the  target  as  "java  CmdExec".  Change  the  run  option  to  Minimized  to  hide  the  black  DOS  console  when  the  BAT  is  executed.    
NOTE  3  :  A  useful  link  on  the  subject  :  JavaWorld  article,  thanks  to  O.  Thomann.    
--------------------------------------------------------------------------------  
 
The  following  example  start  a  Dial-up  connection  on  the  Win  plateform  :  [Dialup.java]  
public  class  Dialup  {  
     public  static  void  main(String[]  args)  throws  Exception  {  
         Process  p  =  Runtime.getRuntime().exec("dialup.bat");  
         p.waitFor();  
         System.out.println("Done.");  
         }  
     }  
   
The  BAT  file  contains  the  DOS  call  to  bring  the  Dialog.  The  "MyConnection"  is  the  DUN  and  it's  case  sensitive.  [dialup.bat]  
rundll32.exe  rnaui.dll,RnaDial  MyConnection  
 
   
You  still  need  to  press  ENTER  to  CONNECT,  there  is  an  option  in  the  Connection  properties  to  connect  automatically.    
 
If  you  want  to  wait  until  the  BAT  file  is  finished,  use  "start  /wait".  [dialup.bat]  
start  /wait  rundll32.exe  rnaui.dll,RnaDial  MyConnection  
 
   
On  NT  and  W2K,  rnaui.dll  is  not  available.  Use  rasdial.exe  instead.  rasdial  "connection  name"  
rasdial  "connection  name"  /d  to  drop  
rasdial  /?  for  more  options  
 
   
 
 
 
--------------------------------------------------------------------------------  
 
To  launch  a  Unix  script  String[]  cmd  =  {"/bin/sh",  "-c",  "ls  >  hello"};  
Runtime.getRuntime().exec(cmd);  
 
   
 
 
 
--------------------------------------------------------------------------------  
 
You  can  include  a  path  for  the  program  to  be  executed.  On  the  Win  plateform,  you  need  to  put  the  path  in  quotes  if  the  path  contains  spaces  in  it.    public  class  Test  {  
     public  static  void  main(String[]  args)  throws  Exception  {  
         Process  p  =  Runtime.getRuntime().exec(  
             "/"c:/program  files/windows/notepad.exe/"");  
               p.waitFor();  
         }  
   }  
   
 
 
 
 
--------------------------------------------------------------------------------  
If  you  need  to  pass  arguments,  it's  safer  to  a  String  array  especially  if  they  contain  spaces.  String[]  cmd  =  {  "myProgram.exe",  "-o=This  is  an  option"  };  
Runtime.getRuntime().exec(cmd);  
 
   
 
 
 
--------------------------------------------------------------------------------  
 
PDF  (Windows  only)  
[ShowPDF.java]  
public  class  ShowPDF  {  
     public  static  void  main(String[]  args)  throws  Exception  {  
         Process  p  =  Runtime.getRuntime().exec("showpdf.bat  mypdf.pdf");  
         p.waitFor();  
         System.out.println("Done.");  
         }  
     }  
 
[showpdf.bat]  
rundll32  url.dll,FileProtocolHandler  %1  
   
 
 
 
--------------------------------------------------------------------------------  
 
VBSCRIPT  
//  Win9x  
Runtime.getRuntime().exec("start  myscript.vbs");  
 
//  WinNT  
Runtime.getRuntime().exec("cmd  /c  start  myscript.vbs");  
 
   
 
 
 
--------------------------------------------------------------------------------  
 
HTML  Help  (Windows  only)  
Runtime.getRuntime().exec("hh.exe  myhelpfile.chm");  
 
   
 
 
 
--------------------------------------------------------------------------------  
 
Any  program  using  the  Windows  file  association  mechanism    
where  "file"  is  the  filename  of  the  data  file  ex.  myresume.doc  to  start  Word  if  the  doc  extension  is  associated  with  it.  Runtime.getRuntime().exec  
   ("rundll32  SHELL32.DLL,ShellExec_RunDLL  "  +  file.getAbsolutePath());  
 
   
 
 
 
--------------------------------------------------------------------------------  
Written  and  compiled  by  Réal  Gagnon  ©1998-2003    
---------------------------------------------------------------  
 
Runtime.getRuntime().exec("cmd  /c  start  E://test.txt");

抱歉!评论已关闭.