1、java启动exe程序
public static void startCmd(){
String pidName ="RCX_radar.exe";
String filepath = "D:\\test\\EDA_BS_WIN\\BS_WIN\\";//exe存放路径
File file = new File(filepath+pidName);
if (file.exists()) {
Runtime runtime = null;
try {
runtime = Runtime.getRuntime();
//启动exe执行程序
runtime.exec("cmd /c start "+filepath+pidName);//启动应用
System.out.println("程序启动成功");
} catch (Exception e) {
e.printStackTrace();
}finally{
runtime.gc();
}
}else{
System.out.println("程序不存在");
}
}
2、停止exe程序
public static void killExe(){
String procName = "RCX_radar.exe";
try {
Runtime runtime = Runtime.getRuntime();
runtime.exec("taskkill /F /IM " + procName );//停止应用
} catch (Exception e) {
System.out.println("关闭程序进程异常:"+e.getMessage());
}
}
3、监测exe程序进程是否存在
/**
* 检查RCX_radar.exe进程是否存在,存在则杀死进程
*/
public static boolean checkProcess() {
//进程名
String procName = "RCX_radar.exe";
//判断是否存在进程
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) {
//logger.error("查询程序进程异常:"+ex.getMessage());
return existProc;
} finally {
if (bufferedReader != null) {
try {
bufferedReader.close();
} catch (Exception ex) {}
}
}
return existProc;
}
4、重启exe程序
public static void reStartCmd(){
if(checkProcess()){
killExe();
}
startCmd();
}