链接:

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;
}

java-启动和关闭.exe程序的更多相关文章

  1. java在进程启动和关闭.exe程序

    /** * @desc 启动进程 * @author zp * @date 2018-3-29 */ public static void startProc(String processName) ...

  2. java实现可安装的exe程序

    java实现可安装的exe程序 通过编写Java代码,实现可安装的exe文件的一般思路: 1.在eclipse中创建java项目,然后编写Java代码,将编写好的Java项目导出一个.jar格式的ja ...

  3. Java编程打开运行exe程序

    String path = "notepad.exe"; //(C:\Program Files\Tencent\QQ\Bin\qq.exe) try { Runtime runt ...

  4. nohup npm start &启动之后关闭终端程序没有后台运行

    感谢:https://blog.csdn.net/nsj820/article/details/5862231 “在当shell中提示了nohup成功后,还需要按终端上键盘任意键退回到shell输入命 ...

  5. Tomcat学习笔记【2】--- Tomcat安装、环境变量配置、启动和关闭

    本文主要讲Tomcat的安装和配置. 一 Tomcat安装 1.1 下载 下载地址:http://tomcat.apache.org/ 1.2 安装 Tomcat是不需要安装的,解压压缩包即可. 在安 ...

  6. WPF 程序中启动和关闭外部.exe程序

    当需要在WPF程序启动时,启动另一外部程序(.exe程序)时,可以按照下面的例子来: C#后台代码如下: using System; using System.Collections.Generic; ...

  7. 查看程序是否启动或者关闭--比如查看Tomcat是否开启!直接用ps命令查看进程就行了啊

    1.查看程序是否启动或者关闭--比如查看Tomcat是否开启!直接用ps命令查看进程就行了啊 2.Tomcat服务器和虚拟机的关系,Tomcat启动运行过程要调用系统环境变量的java_home啊,J ...

  8. Android adb.exe程序启动不起来,如何处理

    经常遇到 Please ensure that adb is correctly located at 'D:\java\sdk\platform-tools\adb.exe' and can be ...

  9. 【解决】应用程序无法正常启动(0xc000007b)。请单击“确定”关闭应用程序。

    换了SSD硬盘,装了Windows 7 SP1 x64的系统.用了一段时间,突然一天有些软件打不开了.弹出下面的提示 应用程序无法正常启动(0xc000007b).请单击“确定”关闭应用程序.第一时间 ...

随机推荐

  1. 虹软SDK在nodejs中的集成

    ==虹软官网地址== http://www.arcsoft.com.cn 在官网注册账号,并且申请人脸识别激活码, 选择SDK版本和运行系统(windows/linux/android/ios) ,我 ...

  2. itsdangerous

    将字典进行加密.解密 通过私钥保证安全性 serializer=TimedJSONWebSignatureSerializer(私钥,过期时间) dumps(字典)=====>返回加密字符串 l ...

  3. 【shell脚本】 变量基础学习整理

    1.linux系统环境 echo 'echo /etc/profile ' >> /etc/profile echo 'echo /etc/bashrc' >> /etc/ba ...

  4. [JavaScript] 邮箱验证

    1.JQuery $(function(){ $("#username").blur(function(){ var temp=$("#username"); ...

  5. web 服务发布注意事项

    1.在发布的时候首先查看服务器对外开放的端口,如果没有最好和客户进行沟通需要开放那些对应的端口,要不外界无法访问发布的站点. 2.在oracle需要远程控制服务器的数据库的时候需要开发1521端口.

  6. android:Internet(volley)

    public void getStringFromCloud(View view) { /*创建请求队列*/ RequestQueue queue = Volley.newRequestQueue(t ...

  7. PDF 补丁丁 0.6.0.3282 版发布(修复内存漏洞)

    补丁丁的新测试版修复了旧版在导出图片.分析文件结构时的内存漏洞. 对于希望表达对本软件感情的用户,可点击“帮助”菜单的“关于本程序及作者”命令,用微信扫描里面的二维码表达您的谢意. 新的测试版正在制作 ...

  8. java多线程之yield,join,wait,sleep的区别

    Java多线程之yield,join,wait,sleep的区别 Java多线程中,经常会遇到yield,join,wait和sleep方法.容易混淆他们的功能及作用.自己仔细研究了下,他们主要的区别 ...

  9. Mysql服务配置优化

    mysql服务器优化包含 硬件优化.操作系统配置优化(cpu调度.网络.内存.虚拟内存.磁盘io).Mysql服务配置优化(最大连接数.表缓存等.存储引擎).表结构优化.索引优化 总共5个方面. 本片 ...

  10. Windows下dos命令行

    Dos命令--基本命令 1.求助命令 例如:del /? rd /? 2.基本常用命令 例如:dir :列出当前目录下的文件以及文件夹,后面可以接其他路径 md:创建目录(mkdir),一次创建多级目 ...