Диспетчер задач
#1
Отправлено 05 октября 2011 - 11:25
#2
Отправлено 05 октября 2011 - 12:13
Добрый день, не подскажите: как можно отслеживать состояние (работает/не отвечает) приложения (.exe) в диспетчере задач? Допустим, есть abrUser.exe, я хочу знать какое на данные момент у этого экзешника состояние в диспетчере задач - работает или не отвечает. Спасибо.
могу только предложить определение использования памяти и ЦПУ данного процесса в данный момент )
if (Sys.WaitProcess("abrUser",100).Exists) { Log.Message("Процесс запущен"); Log.Message("Использование памяти данным процессором: "+Sys.Process("abrUser").MemUsage); Log.Message("Использование ЦПУ данным процессом: "+Sys.Process("abrUser").CPUUsage); } else Log.Warning("Процесс не запущен");
#3
Отправлено 05 октября 2011 - 12:52
#4
Отправлено 06 октября 2011 - 03:57
Sub Wait_task_manager Sys.Process("taskmgr").Window("#32770", "Диспетчер задач Windows", 1).Window("SysTabControl32", "Tab1", 1).ClickTab("Приложения") 'поиск задачи n = 0 do while name_task <> "Erg" name_task = Sys.Process("taskmgr").Window("#32770", "Диспетчер задач Windows", 1).Window("#32770", "", 1).Window("SysListView32", "Задачи", 1).wItem(n, 0) n = n + 1 loop 'мониторинг (через 2 сек) состояния найденной задачи Работает/Не отвечает status_task = Sys.Process("taskmgr").Window("#32770", "Диспетчер задач Windows", 1).Window("#32770", "", 1).Window("SysListView32", "Задачи", 1).wItem(n - 1, 1) do while status_task = "Не отвечает" status_task = Sys.Process("taskmgr").Window("#32770", "Диспетчер задач Windows", 1).Window("#32770", "", 1).Window("SysListView32", "Задачи", 1).wItem(n - 1, 1) aqutils.Delay(2000) loop End SubЖду критику
#5
Отправлено 06 октября 2011 - 11:14
tasklist /FI "IMAGENAME eq myprocess.exe" /V /FO LIST
Можно еще покопаться в WMI, думаю, что и там статусы должны найтись.
#6
Отправлено 07 октября 2011 - 07:57
В WMI, по-моему, такого нет, зато есть в .NET:Можно еще покопаться в WMI, думаю, что и там статусы должны найтись.
// JScript var p = Sys.Process("Explorer"); var dotNETprocess = dotNET.System_Diagnostics.Process.GetProcessById(p.ID); if (! dotNETprocess.Responding) { // Процесс не отвечает }Надо добавить System.dll в проектные настройки CLR Bridge. Источник.
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных