java-啟動和關閉.exe程序


鏈接:

https://www.cnblogs.com/pengpengzhang/p/8675740.html

https://blog.csdn.net/ZHANGHUI3239619/article/details/78808129

例:

// 啟用exe客戶端
    @RequestMapping("/startUpXFExe")
    @ResponseBody
    public ResponseResult startUpXFExe(ModelMap map, HttpServletRequest request) {
        ResponseResult responseResult = new ResponseResult(ResponseResult.FAILURECODE);
        String exePathXF = SysConfigItemValue.getValue("exePathXF");//exe存放路徑
        if (StringUtils.isNotBlank(exePathXF)) {
            String procName = "iflytek.Court.Client.exe";
            String result = checkProcess(procName);//檢查exe進程
            if (result.isEmpty()) {
                try {  
                    //啟動exe執行程序
                    Desktop.getDesktop().open(new File(exePathXF));  
                    responseResult.setCode(ResponseResult.SUCCESSCODE);
                    //responseResult.setMsg("程序啟動成功。");
                } catch (Exception e) {  
                    e.printStackTrace(); 
                    responseResult.setMsg("程序:" + exePathXF + "不存在!");
                    logger.error("程序:" + exePathXF + "不存在!");  
                }  
            }else {
                responseResult.setMsg(result);
            }
        }   
        return responseResult;
    }
    
    /**
     * 檢查進程是否存在,存在則殺死進程
     * @param procName
     */
    public String checkProcess(String procName) {
        String result = "";
        //判斷是否存在進程
        Boolean existProc = false;
        BufferedReader bufferedReader = null;
        try {
            Process proc = Runtime.getRuntime().exec("tasklist -fi " + '"' + "imagename eq " + procName +'"');
            bufferedReader = new BufferedReader(new InputStreamReader(proc.getInputStream()));
            String line = null;
            while ((line = bufferedReader.readLine()) != null) {
                if (line.contains(procName)) {
                    existProc = true;//存在
                }
            }
        } catch (Exception ex) {
            result = "查詢程序進程異常:"+ex.getMessage();
            logger.error("查詢程序進程異常:"+ex.getMessage());  
            return result;
        } finally {
            if (bufferedReader != null) {
                try {
                    bufferedReader.close();
                } catch (Exception ex) {}
            }
        }

        // 存在,則先殺死該進程
        if (existProc) { 
            BufferedReader br = null;
             try {
                 if (StringUtils.isNotBlank(procName)) {  
                     //執行cmd命令 
                     String command = "taskkill /F /IM " + procName; 
                     Runtime runtime = Runtime.getRuntime();  
                     Process process = runtime.exec("cmd /c " + command);  
                     br = new BufferedReader(new InputStreamReader(process.getInputStream(), "UTF-8"));  
                     String line = null;  
                     StringBuilder build = new StringBuilder();  
                     while ((line = br.readLine()) != null) {   
                         build.append(line);  
                     }  
                 } 
             } catch (Exception e) {
                 result = "關閉程序進程異常:"+e.getMessage();
                 logger.error("關閉程序進程異常:"+e.getMessage()); 
                 return result;
             } finally {
                 if (br != null) {
                     try {
                         br.close();
                     } catch (Exception ex) {}
                 }
             }
        }
        return result;
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM