public static void main(String[] args) {
Process objProcess = Runtime.getRuntime().exec("cmd /c notepad.exe");
}这段代码可以打开记事本程序,但应该怎么关闭这个程序?调用objProcess.destroy()也不起作用.有没有其它方法可以运行一个可执行文件并且可以正常关闭?

解决方案 »

  1.   

    exec("cmd /c notepad.exe");之后,Java就认为这个进程结束了
      

  2.   

    杀掉?是停掉吧  用sleep吧
      

  3.   


    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    public class Test
    {        
    public static void main(String[] args)
        {        
    try
                    {
                            String[] cmd =
                            { "tasklist"};
                            Process proc = Runtime.getRuntime().exec(cmd);
                            BufferedReader in = new BufferedReader(new InputStreamReader(proc
                                    .getInputStream()));                        
                            String string_Temp = in.readLine();
                            while (string_Temp != null)
                            {
                                    System.out.println(string_Temp);
                                    if(string_Temp.indexOf("notepad.exe")!=-1)
                                     Runtime.getRuntime().exec("Taskkill /IM notepad.exe");
                                    string_Temp = in.readLine();
                            }
                    }
                    catch (Exception e)
                    {
                    }
        }
    结束指定的系统进程 notepad.exe
      

  4.   

    其实就是4楼的答案,就是调用CMD下的命令。
    CMD下杀死进程有两种方法,第一种就是4楼的方法:TaskKill  /M (进程名字)
    如  TaskKill /m   Notepad.exe
    java中就是Runtime.getRuntime().exec("TaskKill /m Notepad.exe"); 
    第二种就是  ntsd -c q -pn (进程名字)
    java中就是Runtime.getRuntime().exec("ntsd -c q -pn Notepad.exe"); 
    一般第二种方法比第一种强劲一些,楼主可以看着自己选择。
      

  5.   

    如果打开的是指定的一个文件
    Runtime.getRuntime().exec("cmd /c c:\\abc.txt"); 结束的时候这样调用就不行了
    Runtime.getRuntime().exec("Taskkill /IM c:\\abc.txt"); 
      

  6.   

    结束的时候还是用这句 
       Runtime.getRuntime().exec("Taskkill /IM notepad.exe"); 没有这样的命令的 Runtime.getRuntime().exec("Taskkill /IM c:\\abc.txt");