![]() |
|
|
![]()
|
|
| AndreySol |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 772 Регистрация: 19.6.2004 Репутация: 1 Всего: 1 |
Есть ли еще способ получить HMODULE файла (имея путь к exe или dll файлу) кроме ф-ций LoadLibrary и LoadLibraryEx.
Если можно, с примерами кода. |
|||
|
||||
| chaos |
|
|||
![]() Серийный программист ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2979 Регистрация: 7.7.2004 Где: Екатеринбург Репутация: 4 Всего: 44 |
посмотри LoadModule
|
|||
|
||||
| JoyEx |
|
|||
|
Дядя ![]() ![]() Профиль Группа: Участник Сообщений: 323 Регистрация: 21.6.2005 Где: Москва, РФ Репутация: 5 Всего: 12 |
Спасет GetModuleHandle() и GetModuleHandleEx()
-------------------- Если ты уже никого не боишься, значит ты самый страшный |
|||
|
||||
| AndreySol |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 772 Регистрация: 19.6.2004 Репутация: 1 Всего: 1 |
насчет GetModuleHandle() я так понял, что она возвращает HMODULE для библиотек уже загруженных в память, а мне так не подходит.
Мне тут на другом форуме подсказали про CoLoadLibrary() - но не могу заставить ее работать. Делал так:
Что у меня неправильно ? |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
CoLoadLibrary не любую библиотеку загружает. У нее должны быть специальные точки входа, не помню сейчас, как называются - предназначены для инициализации com-функций. И чем тебя LoadLibrary не устраивает? CoLoadLibrary сначала использует LoadLibrary (Ex) для загрузки библиотеки, а потом проводит дополнительную инициализацию.
ЗЫ Если библиотека не загрузилась, какой смысл вызывать CoFreeLibrary? Что, по твоему, система может сделать с нулевым хандлом? -------------------- ... |
|||
|
||||
| AndreySol |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 772 Регистрация: 19.6.2004 Репутация: 1 Всего: 1 |
Earnest
а так же и exe-шники. Вот этим мне LoadLibrary (Ex) и не нравится. Ведь должен же быть способ получить HMODULE для любого exe или dll файла ! |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
LoadLibraryEx загружает любую DLL или EXE. Если тебе это нужно для выполнения кода - может не получиться, т.к. при загрузке модуль пытается разрешать ссылки. Но если для выкапывания ресурсов или чего-то в этом роде - ставь флаг DONT_RESOLVE_REFERENCES, и все загрузится.
-------------------- ... |
|||
|
||||
| Nastya |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 27.3.2002 Где: Мариуполь Репутация: 1 Всего: 44 |
А зачем тебе незагруженная dll или exe? Я могу найти одну причину разбор заголовка.
Посмотри может что из этого поможет http://www.rsdn.ru/article/baseserv/peloader.xml http://www.rsdn.ru/?article/baseserv/peloader.xml -------------------- Что бы понять рекурсию, надо понять рекурсию "Профессионал - это человек сделавший все возможные ошибки в очень узкой области". Н.Бор |
|||
|
||||
| AndreySol |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 772 Регистрация: 19.6.2004 Репутация: 1 Всего: 1 |
Загруженная DLL или EXE мне нужна для использования ресурсов - LoadIcon, LoadCursor и т.п.
А вообще я пытаюсь решить проблему загрузки и получения HMODULE для любого DLL или EXE файла, а LoadLibrary(Ex) с этим не справляется. Насчет использования LoadLibrary(Ex) с флагом DONT_RESOLVE_REFERENCES у меня в плане загрузки файлов картина получилась аналогично обычной LoadLibrary - к примеру стандартный Калькулятор(c:\windows\calc.exe) не загружается. За ссылки спасибо, щас буду разбираться. |
|||
|
||||
| JoyEx |
|
|||
|
Дядя ![]() ![]() Профиль Группа: Участник Сообщений: 323 Регистрация: 21.6.2005 Где: Москва, РФ Репутация: 5 Всего: 12 |
Зачем заново "придумывать колесо"? Воспользуйся LoadImage(,,,LR_LOADFROMFILE) -------------------- Если ты уже никого не боишься, значит ты самый страшный |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |