| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Visual C++/MFC/WTL > Вопрос по exe и dll файлам. |
| Автор: AndreySol 29.7.2005, 06:49 |
| Есть ли еще способ получить HMODULE файла (имея путь к exe или dll файлу) кроме ф-ций LoadLibrary и LoadLibraryEx. Если можно, с примерами кода. |
| Автор: chaos 29.7.2005, 08:14 |
| посмотри LoadModule |
| Автор: JoyEx 29.7.2005, 08:46 |
| Спасет GetModuleHandle() и GetModuleHandleEx() |
| Автор: AndreySol 3.8.2005, 06:32 | ||
| насчет GetModuleHandle() я так понял, что она возвращает HMODULE для библиотек уже загруженных в память, а мне так не подходит. Мне тут на другом форуме подсказали про CoLoadLibrary() - но не могу заставить ее работать. Делал так:
Что у меня неправильно ? |
| Автор: Earnest 3.8.2005, 06:47 |
| CoLoadLibrary не любую библиотеку загружает. У нее должны быть специальные точки входа, не помню сейчас, как называются - предназначены для инициализации com-функций. И чем тебя LoadLibrary не устраивает? CoLoadLibrary сначала использует LoadLibrary (Ex) для загрузки библиотеки, а потом проводит дополнительную инициализацию. ЗЫ Если библиотека не загрузилась, какой смысл вызывать CoFreeLibrary? Что, по твоему, система может сделать с нулевым хандлом? |
| Автор: AndreySol 4.8.2005, 06:11 | ||
Earnest
а так же и exe-шники. Вот этим мне LoadLibrary (Ex) и не нравится. Ведь должен же быть способ получить HMODULE для любого exe или dll файла ! |
| Автор: Earnest 4.8.2005, 06:30 |
| LoadLibraryEx загружает любую DLL или EXE. Если тебе это нужно для выполнения кода - может не получиться, т.к. при загрузке модуль пытается разрешать ссылки. Но если для выкапывания ресурсов или чего-то в этом роде - ставь флаг DONT_RESOLVE_REFERENCES, и все загрузится. |
| Автор: Nastya 5.8.2005, 10:44 |
| А зачем тебе незагруженная dll или exe? Я могу найти одну причину разбор заголовка. Посмотри может что из этого поможет http://www.rsdn.ru/article/baseserv/peloader.xml http://www.rsdn.ru/?article/baseserv/peloader.xml |
| Автор: AndreySol 12.8.2005, 06:32 |
| Загруженная DLL или EXE мне нужна для использования ресурсов - LoadIcon, LoadCursor и т.п. А вообще я пытаюсь решить проблему загрузки и получения HMODULE для любого DLL или EXE файла, а LoadLibrary(Ex) с этим не справляется. Насчет использования LoadLibrary(Ex) с флагом DONT_RESOLVE_REFERENCES у меня в плане загрузки файлов картина получилась аналогично обычной LoadLibrary - к примеру стандартный Калькулятор(c:\windows\calc.exe) не загружается. За ссылки спасибо, щас буду разбираться. |
| Автор: JoyEx 12.8.2005, 09:56 | ||
Зачем заново "придумывать колесо"? Воспользуйся LoadImage(,,,LR_LOADFROMFILE) |