JAVA监控软件是否启动

package executeCmd;

import java.awt.Desktop;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.util.EncodingUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import lombok.extern.slf4j.Slf4j;
/**
 * 
 * @author 10362
 * 检测程序是否启动,没有启动会执行启动,已经启动会自动重启
 *
 */
@Slf4j
public class  executeCmd{

	//private static Logger log = LoggerFactory.getLogger(executeCmd.class);
	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(), "GBK"));
		String line = null;
		StringBuilder build = new StringBuilder();
		while ((line = br.readLine()) != null) {
			System.err.println(line);
			log.info("程序名称:"+line);
			build.append(line);
		}
		return build.toString();
	}

	/**
	 * 检测应用程序运行状态
	 *
	 * @param programName
	 * @return
	 * @throws IOException
	 */
	public static boolean checkProgramStatus(String programName) throws IOException {

		log.info("检测应用程序:" + programName + "运行状态");
		boolean result = false; // Config.Local.DATA_EXE_ADSUP
		String cmdLines = executeCmd("tasklist |findstr /i \"" + programName + "\"");
		if (StringUtils.isNotEmpty(cmdLines)) {
			log.info("后台任务列表找到" + programName + "程序正在运行······重启应用程序");
			result = true;
		} else {
			log.error("没有在后台任务列表找到" + programName + "程序······重新打开新的应用程序");
		}
		return result;
	}

	/**
	 * 启动应用程序
	 *
	 * @param programName
	 * @return
	 * @throws IOException
	 */
	public static void startProgram(String programPath) throws IOException {
		log.info("启动应用程序:" + programPath);
		if (StringUtils.isNotBlank(programPath)) {
			Desktop.getDesktop().open(new File(programPath));
			// String programName = programPath.substring(programPath.lastIndexOf("\\") + 1,
			// programPath.lastIndexOf("."));
			// executeCmd("start \"" + programName + "\" \"" + programPath + "\"");
		}
	}

	/**
	 * 关闭应用程序
	 *
	 * @param programName
	 * @return
	 * @throws IOException
	 */
	public static void closeProgram(String programName) throws IOException {
		log.info("关闭应用程序:" + programName);
		if (StringUtils.isNotBlank(programName)) {
			executeCmd("taskkill /F /IM " + programName);
		}
	}

	/**
	 * 重启应用程序,若启动则重启,否则打开
	 *
	 * @param programName
	 * @return
	 * @throws IOException
	 */
	public static void restartProgram(String programName, String programPath) throws IOException {
		log.info("重启应用程序:" + programName);
		if (checkProgramStatus(programName)) {
			closeProgram(programName);
		} 
			startProgram(programPath);
	}

	public static void main(String[] args) {
		try {

			String programPath = "d:\\Users\\10362\\Desktop\\M3U8下载合成器.exe";
			String programName = "M3U8下载合成器.exe";
			restartProgram(programName, programPath);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}


  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孟吶李唦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值