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

How to detect the amount of time that specific application hasn't been using CPU?

我正在尝试通过用户界面(使用 TestStack.White)自动化一个第三方应用程序。但有时程序会冻结,因为它在那段时间试图加载一些东西,它也处于 运行 阶段......所以我无法通过检查状态(不是 responding/running)来检测它命令杀死它并重新启动它。然而,在那段时间里 CPU 使用量为零,所以我在想我可以在该应用程序的 CPU 使用量为零时计时吗,如果它是零,让我们说 5 分钟重新启动应用程序。

注意:应用程序 运行 在 Windows 服务器上

提前致谢

可以使用 typeperf:

仅实时 (AFAIK) 测量 CPU 使用情况
@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分钟
  • 示例代码假定点作为十进制分隔符