Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Win API


Информационный Канал Subscribe.Ru

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / WinAPI

Выпуск № 121
от 06.09.2005, 00:27

Администратор:Калашников О.А.
В рассылке:Подписчиков: 260, Экспертов: 28
В номере:Вопросов: 1, Ответов: 2


Вопрос № 25627: Обращаюсь к всемирному разуму за помощью. У меня возникла проблема с получением дескриптора произвольного процесса в системе. Я получаю ID процесса с помощью GetWindowThreadProcessId, передаю его функции OpenProcess для получения дескриптора, а э...

Вопрос № 25.627
Обращаюсь к всемирному разуму за помощью.
У меня возникла проблема с получением дескриптора произвольного процесса в системе. Я получаю ID процесса с помощью GetWindowThreadProcessId, передаю его функции OpenProcess для получения дескриптора, а эта скотина на все ID выдает только одно значение: 0x00000794. GetLastError не фиксирует никаких ошибок, а последующий вызов GetModuleFileName для получения имени модуля, запустившего процесс, естественно ничего не выдает по этому дескриптору. Перерыл все доступные источники, но другого способа получить дескриптор процесса (повторюсь, не собственного, а произвольного) в системе не нашел. Может кто-нибудь что-нибудь подскажет.

Приложение:

Отправлен: 01.09.2005, 00:25
Вопрос задал: Domian (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Bob Johnson
Здравствуйте, Domian!
все правильно на самом деле.
OpenProcess возвращает тебе handle на открытый процесс (его ты можешь использовать в дальнейшем). Но вот GetModuleFileName требует параметром не handle, а HMODULE, а HMODULE - это база загрузки PE модуля в _твоем_ процессе, которая ничего общего не имеет с процессом, который ты открыл, а уж тем более с хэндлом на него.
Что же тебе делать? Использовать CreateToolhelp32Snapshot, а затем искать самому процесс по известному идентификатору.
Ответ отправил: Bob Johnson (статус: Академик)
Отправлен: 01.09.2005, 01:04
Оценка за ответ: 5
Комментарий оценки:
Спасибо за ответ и за объяснение ошибки.

Отвечает: Sager
Здравствуйте, Domian!
Вот тебе примерчик, прога выводит все процессы в листбокс, там и все ИД получено.......

Приложение:

Ответ отправил: Sager (статус: 5-ый класс)
Отправлен: 01.09.2005, 09:25
Оценка за ответ: 5
Комментарий оценки:
Благодарю за примерчик. Посижу. Покумекаю.


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2005, RusFAQ.ru, Россия, Москва. Все права защищены.
Идея, дизайн, программирование, авторское право: Калашников О.А.

Яндекс


Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.winapifaq
Отписаться
Вспомнить пароль

В избранное