![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| Atra |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 20.2.2014 Репутация: нет Всего: нет |
Здравствуйте. Не могу понять, в чем может быть ошибка. Не могу получить список модулей определенного процесса.
Задача простая: получить список процессов, отобразить его в окне, выделить в окне строку с именем процесса, при нажатии на кнопку "подробнее" отобразить в дочернем окне запущенные процессом модули. Вот часть моего кода, отсутствует дочернее окно и запись в него списка модулей, т.к. сам снимок модулей не могу получить. Программу пишу в vs 2010 на c++ winapi:
Это сообщение отредактировал(а) Atra - 20.2.2014, 16:37 |
|||
|
||||
| Dem_max |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1780 Регистрация: 12.4.2007 Репутация: 16 Всего: 39 |
-------------------- Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte") |
|||
|
||||
| Atra |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 20.2.2014 Репутация: нет Всего: нет |
Спасибо, но этот пример я юзала...на его основе создавала код, где делался снимок всех процессов, перебирались в цикле до тех пор пока не совпадали ид процесса искомого с идом процесса из структуры, и запускалась функция создания снимка модулей, которой конкретно передавалось значение ида из структуры - pe32. ...
Приложение также выдавало ошибку - переменная, куда должен записаться снимок модулей, оставалась пустой. Почему не срабатывает с модулями, но срабатывает с процессами для меня загадка... я также пробовала давать программе права отладчика, не помогает... Есть ли еще варианты? |
|||
|
||||
| feodorv |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 9 Всего: 45 |
Какой вызов даёт ошибку? Какая у Вас операционка, какая разрядность, какая разрядность процесса, для которого Вы смотрите список модулей? -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
|||
|
||||
| Atra |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 20.2.2014 Репутация: нет Всего: нет |
Возможно я не совсем правильно выразилась...
При работе программы, прохожу проверку:
hModulesSnap у меня INVALID_HANDLE_VALUE!!! Получается, что функция CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, PrID) не создает снимка модулей... Я уже попыталась прикрутить EnumProcessModules, но не совсем понимаю ее работу... Делала по примеру для получения имени первого модуля с полным путем ( имени самого процесса, на сколько я поняла), что-то получила... Это что-то вывела MessageBox, но все это было пустыми квадратами... Но ведь работает, получает первый модуль. Тогда, что не так с CreateToolhelp32Snapshot??? Ведь снимки процессов делает... У меня семерка, все 32 разрядное... |
|||
|
||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
-------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| Atra |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 20.2.2014 Репутация: нет Всего: нет |
GremlinProg, спасибо
CreateToolhelp32Snapshot failed with error 5: отказано в доступе Что делать? |
|||
|
||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
Насколько я знаю, не все процессы можно так "фотографировать". Думаю, те, к которым доступ запрещен, стоит просто пропустить, либо выдать пользователю соответствующее сообщение. -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| Atra |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 20.2.2014 Репутация: нет Всего: нет |
Может кому пригодиться... Решила проблемку:
1. Запустить программу под правами админа 2. Сделать привилегию отладчика Нарыла такой код функции привилегии, запускаем с параметром true - получаем привилегию.
И еще, вместо CreateToolhelp32Snapshot для просмотра модулей процесса я использовала EnumProcessModules и OpenProcess с параметром PROCESS_ALL_ACCESS
|
||||
|
|||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |