Як отримати% завантаження процесора конкретним додатком
Як отримати% завантаження процесора конкретним додатком?
Потрібно стежити за активністю додатки і через заданий час якщо додаток простоює, то завершити його. Я так розумію мені потрібно то про що йдеться в темі?
Ім'я процесу я можу отримати, а також його ID. Як мені дізнатися
%? Або може є які-небудь інші способи відстеження активності програми?
Заздалегідь вдячний за допомогу.
С ув. Ігор Новосьолов
ICQ. 46732777
Можна подивитися в реєстрі (HKEY_DYN_DATA, а далі ще щось), але там інформація неправильна. У всякому разі у мене в 98SE і в ME було так.
Щось я не знайшов ключа HKEY_DYN_DATA в реєстрі w2k.
Мені здається, можна спробувати GetProcessTimes.
Тобто, наприклад, отримати User Time + Kernel Time для всіх запущених процесів за який - то проміжок часу і порівняти з такою ж сумою для нашого процесу.
Може, є спосіб краще?
Спробував я User Time + Kernel Time за проміжок часу.
Ідея непогана. тільки для того щоб підрахувати% потрібно знати
також час бездіяльності системи. А як його визначити не знаю.
А навіщо потрібен час бездіяльності? Адже нас цікавить відносна завантаження процесора.
Але може, в даному випадку "бездіяльність" процесу спробувати детектувати за допомогою WaitForInputIdle?
Так але якщо всі процеси стоять то User Time + Kernel Time і них
не змінюється і це значить що ставлення User Time + Kernel Time необхідного процесу до User Time + Kernel Time всіх процесів незмінно і одно якогось значенням (НЕ 0). А насправді процес варто. Ось і думаю, що до User Time + Kernel Time всіх
процесів потрібно додати Idle ( "бездіяльність системи") тоді і вийде реальна цифра. хоча може і помиляюся.
Я думав дивитися не просто User Time + Kernel Time, а як змінюється ця сума за довільний проміжок часу. Тобто, якщо сума не змінилася, то процес простоює (може бути, і разом з усіма іншими) і його треба завершувати.
Все залежить від того, що потрібно. Якщо критерієм для "вбивства" процесу є просто його "простий", то IMHO краще всього використовувати WaitForInputIdle.
За допомогою API - ф-ції FileTimeToSystemTime отримуємо стр-ру TSystemTime, де час в "нормальному" вигляді.
Якщо треба ще якось з ним попрацювати, складати або віднімати, можна скористатися дельфійським типом TDateTime і SysUtils - івської SystemTimeToDateTime.
Пам'ять: 0.74 MB
Час: 0.036 c