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


Автор: Dieselist 12.5.2008, 16:10
Здравствуйте, уважаемые.
Надо написать програмку для мониторинга запущенных процессов. Типа диспетчера задач, но чтоб она давала еще дополнительные сведения о процессе. Типа какой ресурс, как часто, что вызывал ... Вобщем полная статистика. 
На данный момент написал только програмку для вывода списка текущих процессов в листбокс.
Если можно, пример, пожалуйста smile

Автор: Lazin 12.5.2008, 16:22
открывай процесс через OpenProcess и получай все что хочешь :smile

Автор: Dieselist 12.5.2008, 17:06
А можно, пожалуйста, чуть подробнее на эту тему? Что конкретно, и как, я смогу получить?
Буду очень признателен за пример, или линк smile

Автор: Dieselist 13.5.2008, 01:41
Нужно сделать возможность именно _мониторинга_ процессов. Получать инфу о том, что какой процесс сейчас делает, обращения к файлам, и в том же духе.
Может кто-то поделиться идеями по поводу реализации такой проги? smile

Автор: dumb 13.5.2008, 02:14
слишком много получится идей. черпай их, например, из исходников http://jacquelin.potier.free.fr/winapioverride32/.

Автор: Dieselist 18.5.2008, 20:51
Уточню, что за программа мне нужна. 
Необходимо написать программку, для мониторинга процессов. Программа должна отображать процессы в виде дерева (т.е. показывать родительские процессы) и информацию по ним (как-то, размер в ОЗУ, сколько процессорного времени отъедает, приоритет). Также желательно сделать диаграммку (сродни той, что в таск менеджере), для просмотра текущей загрузки ЦП и памяти.
Если нет желания писать код, подскажите, пожалуйста, хотя бы с помощью чего ее можно реализовать? Или алгоритм...

Автор: NYX 5.8.2009, 18:33
Товарищи форумчане, а меня тоже интересует данная тема. Точнее меня интересует метод взятия информации о процессе по пиду, хэндлу или любому другому доступному идентификатору процесса. Как я понял из предыдущих сообщений, после получения хэндла через OpenProcess, над этим хэндлом мона как то колдовать и получать количество занимаемой памяти в ОЗУ. А сложив все объёмы процессов и сравнив их с максимально доступным объёмом ОЗУ, можно получить занимаемое место в памяти в процентах или выводить более подробную статистику....
 smile 
Нашёл статейку, но на вижале. http://www.realcoding.net/article/view/2809 при желании можно рассмотреть для BCB  smile 

Автор: NYX 22.8.2009, 14:36
Этот код показывает в процентах, сколько занято места в ОЗУ...
Код

TMemoryStatus MemInfo;
MemInfo.dwLength = sizeof(MemInfo);
GlobalMemoryStatus(&MemInfo);
double Progress = MemInfo.dwMemoryLoad;
ProgressBar1->Position = Progress;


Что бы узнать больше подробности о памяти нужно следовательно извлеч информацию из
нужного члена MemInfo. Вот описание...

dwLength Размер структуры
dwMemoryLoad память в %
dwTotalPhys физическая в байтах
dwAvailPhys свободной физической аналогично в байтах
dwTotalPageFile Файл подкачки (в байтах)
dwAvailPageFile свободно в Файле подкачки (в байтах)
dwTotalVirtual и dwAvailVirtual - думаю тут ясно про что идёт реч  smile 

!!! Именно это я и искал !!!

Автор: XPyCT 28.8.2009, 20:17
Идем в гугл и ищем книжку А.Я Архангельского Приемы программирования в С++ Builder 6 и 2006
Механизмы windows, сети


у него все это очень красиво описано более того на диске есть уже готовый пример того что вам нужно

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