如何检测特定应用程序没有使用CPU的时间?

时间:2015-08-18 19:12:44

标签: c# user-interface batch-file cmd white

我试图通过用户界面(使用TestStack.White)自动化第三方应用程序。但有时程序冻结,因为它试图在那段时间内加载某些东西,它也处于运行阶段......所以我无法通过检查状态(没有响应/运行)来检测它以便杀死它并重新启动它。但是在那段时间内CPU使用率为零,所以我在考虑可以在该应用程序的CPU使用率为零时对其进行计时,如果为零则让我们说5分钟重新启动应用程序。

注意:应用程序正在Windows Server上运行

提前致谢

1 个答案:

答案 0 :(得分:0)

可以使用typeperf实时测量CPU使用率(AFAIK):

@echo off
:check
for /f "delims=, tokens=2 skip=2" %%a in ('^
    typeperf  "\Process(EXENAME_WITHOUT_EXTENSION)\%% Processor Time" -si 300 -sc 1^
') do (
    set cpu=%%~a
    goto break
)
:break
if not %cpu:~0,2%==0. goto check

restart_the_process......
  • EXENAME_WITHOUT_EXTENSION例如Explorer
  • -si 300表示300秒或5分钟
  • 示例代码假设dot为十进制分隔符