java 监控某个进程是否在运行

本文介绍了一种使用VBS脚本监控特定进程(如Yodao)是否在Windows系统中运行的方法。通过创建并执行一个临时VBS脚本来枚举所有正在运行的进程,然后筛选出包含指定关键字的进程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/**

* 监控电脑某个进程是否在运行

* @param args

*/

private static final String PNAME = "Yodao";

 

public static void main(String[] args)

  throws IOException {

 System.out.println("包含关键字 "+PNAME+" 的进程有:");

 System.out.println();

 String path = System.getProperty("user.dir");

 //1:创建一个可执行文件,用于读取系统进程

 final File createFileName = new File(path + "\\mytempscript.vbe");

 if(createFileName.exists()?createFileName.delete():createFileName.createNewFile()){}

 final PrintWriter pw = new PrintWriter(new FileWriter(createFileName,true), true);

 // 利用GetObject("WinMgmts:")获取系统信息

 pw.println("for each ps in getobject(\"winmgmts:\\\\.\\root\\cimv2:win32_process\").instances_");

 pw.println("wscript.echo ps.handle&vbtab&ps.name");

 pw.println("next");

 pw.close();

 

 //2:调用此可执行文件,并将此文件读取的内容写进到流

 final InputStream ii = Runtime.getRuntime().exec("cscript " + path + "\\mytempscript.vbe").getInputStream();

 final InputStreamReader ir = new InputStreamReader(ii);

 final BufferedReader br = new BufferedReader(ir);

 String str = null;

 String[] ss = null;

 

 //遍历所有进程  br: 6568chrome.exe

 while ((str = br.readLine()) != null) {

  if (str.indexOf(PNAME)>0&&str.endsWith(".exe")) {

   ss = str.split("\\s");

   for(int i=0;i<ss.length;i+=2){

    System.out.println("****************************");

    System.out.println("进程名:"+ss[i+1]+"\n进程ID:"+ss[i]);

   }

  }

 }

 //再把此文件删了

 if(createFileName.exists()){ createFileName.delete();}

 System.out.println("****************************");

 ir.close();

 ii.close();

 br.close();

}

 

上网加速器利器,程序员必备!自己一直在用,有需要的朋友可以试试!

http://honx.in/i/VIFTbc6vD2Sxigzt

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值