0 [IF]
вот еще пришло в голову: может, имеет смысл несколько расширить
возможные параметры для "отслеживалки", чтобы она приобрела бОльшую
функциональность. в идеале для себя я это вижу так:

CheckUsage (<process>, <interval>, <usage>, <count>)

<process> -- отслеживаемый процесс

<interval> -- с каким интервалом (в секундах) за ним следить

<usage> -- пороговое значение в процентах. если использование этим
процессом процессорного времени меньше этого значения, срабатывает
"ситуация"

<count> -- количество ПОДРЯД ИДУЩИХ "ситуаций", после которого
выполнение CheckUsage завершается.

То есть CheckUsage(calculator.exe, 1, 20, 5) означает:

каждую <1> секунду отслеживать процессорное время, используемое
процессом <calculator.exe>. если <5> раз подряд оно будет меньше <20>
процентов -- выполнение команды завершается.

я понимаю, что у вашей команды может быть свой взгляд на проблему :)
так что это не "рекомендации" а просто из серии "как было бы
максимально удобно мне".

просто если будет как-то по-другому, то мне все равно придется
реализовывать именно описанную выше функциональность, только с помощью
какой-то подпрограммы.

суть всех этих извращений с <interval> и <counter>, собственно, вот в
чем: у процессов бывают "моментальные провалы" в CPU usage. например,
приложение в некий момент полезло на диск и просто ждет, когда
подгрузятся данные. образуется "моментальный провал", и если
сторожилка тупая, то она зафиксирует, что программа перестала
использовать процессор, и продолжит выполнение. а процесс на самом
деле далеко не завершился. по-моему, предложенная схема в умелых руках
:) позволит писателю скрипта более точно отслеживать фактическое
окончание процесса, манипулируя с <interval> и <counter>.
[THEN]