zoukankan      html  css  js  c++  java
  • java在进程启动和关闭.exe程序

    /**
         * @desc 启动进程
         * @author zp
         * @date 2018-3-29
         */
        public static void startProc(String processName) { 
             log.info("启动应用程序:" + processName);  
             if (StringUtils.isNotBlank(processName)) {  
                 try {  
                     Desktop.getDesktop().open(new File(processName));  
                 } catch (Exception e) {  
                     e.printStackTrace();  
                     log.error("应用程序:" + processName + "不存在!");  
                 }  
             }   
        }
        /**
         * @desc 杀死进程
         * @author zp
         * @throws IOException 
         * @date 2018-3-29
         */
        public static void killProc(String processName) throws IOException {  
            log.info("关闭应用程序:" + processName);  
            if (StringUtils.isNotBlank(processName)) {  
                executeCmd("taskkill /F /IM " + processName);  
            } 
        }
        /**
         * @desc 执行cmd命令 
         * @author zp
         * @date 2018-3-29
         */
        public static String executeCmd(String command) throws IOException {  
            log.info("Execute command : " + command);  
            Runtime runtime = Runtime.getRuntime();  
            Process process = runtime.exec("cmd /c " + command);  
            BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream(), "UTF-8"));  
            String line = null;  
            StringBuilder build = new StringBuilder();  
            while ((line = br.readLine()) != null) {  
                log.info(line);  
                build.append(line);  
            }  
            return build.toString();  
        }  
        /**
         * @desc 判断进程是否开启
         * @author zp
         * @date 2018-3-29
         */
        public static boolean findProcess(String processName) {
            BufferedReader bufferedReader = null;
            try {
                Process proc = Runtime.getRuntime().exec("tasklist -fi " + '"' + "imagename eq " + processName +'"');
                bufferedReader = new BufferedReader(new InputStreamReader(proc.getInputStream()));
                String line = null;
                while ((line = bufferedReader.readLine()) != null) {
                    if (line.contains(processName)) {
                        return true;
                    }
                }
                return false;
            } catch (Exception ex) {
                ex.printStackTrace();
                return false;
            } finally {
                if (bufferedReader != null) {
                    try {
                        bufferedReader.close();
                    } catch (Exception ex) {}
                }
            }
        }

    调用 

                //downfile = "D:\DownFile\DownFile.exe";
                String url = request.getParameter("downfile"); 
                String procName = url.substring(url.lastIndexOf("\")+1,url.length());
                boolean exist= findProcess(procName); 
                try {
                    if (exist) { 
                        // 存在,那么就先杀死该进程
                        killProc(procName);
                        // 在启动
                        startProc(url);
                    }else {
                        startProc(url);
                    }
                } catch (Exception e) {
                    // TODO: handle exception
                    log.error("重启/杀死提取程序失败。。。");  
                }
  • 相关阅读:
    吴恩达-coursera-机器学习-week7
    吴恩达-coursera-机器学习-week4
    吴恩达-coursera-机器学习-week3
    吴恩达-coursera-机器学习-week2
    吴恩达-coursera-机器学习-week1
    Sqlserver实现故障转移 — 故障转移群集仲裁之DFS共享文件夹仲裁
    Sqlserver实现故障转移 — 辅助域控
    Sqlserver 查询数据库连接数
    Unable to preventDefault inside passive event listener
    记:倍福(CP2611 Control Panel)了解
  • 原文地址:https://www.cnblogs.com/pengpengzhang/p/8675740.html
Copyright © 2011-2022 走看看