Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > Мониторинг процессов


Автор: NetDigger 23.11.2004, 08:43
Здравствуйте, уважаемые!
Написал я монитор процессов - выводит какие процессы выполняются сейчас, их ИДы, родительские ИДы, сколько они уже работают, файлы, окна и т.д. Обновление пока делаю по таймеру - т.е. каждый раз снэпшот и пошел сравнивать - если такого ИДа уже нет, то значит процесс умер и следовательно из списка нужно его убрать. Замечательно! Только вот работает долговато - возможны ли альтернативы. Кроме того, выводится это все дело в виде дерева, чтобы можно было понять, какой процесс что породил =)Т.е. если пользователь открыл какой-либо узел, то по срабатыванию таймера дерево перерисовывается, естественно со свернутыми узлами - тоже проблемка. Если записывать имена узлов, которые открыты, а при перерисовки сравнивать и открывать? И еще: можно ли какими-нибудь средствами вывести счетчики производительности процесса: сколько байтов-ввод/вывод, количество чтений и т.д, т.е. аналог диспетчера задач NT. Спросите зачем нужно - да вот озадачили курсовым =) Базовые задания сделаны, но хочется чего-то большего и чистого - для собственного развития.
С уважением.

Автор: p0s0l 23.11.2004, 21:24
Функции счётчиков в NT'ях - гляди названия, которые начинаются на Pdh...
Или же через реестр...

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

Можно вопрос: как ты узнаешь, какие файлы юзает процесс ? Или у тебя под файлами имеется в виду просто загруженные модули (DLL-ки) ?

Автор: NetDigger 24.11.2004, 08:00
Хехе, да именно это я и имел в виду smile . Спасибо за ответ.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)