Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вопрос по exe и dll файлам. 
:(
    Опции темы
AndreySol
Дата 29.7.2005, 06:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 772
Регистрация: 19.6.2004

Репутация: 1
Всего: 1



Есть ли еще способ получить HMODULE файла (имея путь к exe или dll файлу) кроме ф-ций LoadLibrary и LoadLibraryEx.
Если можно, с примерами кода.
PM MAIL   Вверх
chaos
Дата 29.7.2005, 08:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Серийный программист
****


Профиль
Группа: Завсегдатай
Сообщений: 2979
Регистрация: 7.7.2004
Где: Екатеринбург

Репутация: 4
Всего: 44



посмотри LoadModule
PM WWW   Вверх
JoyEx
Дата 29.7.2005, 08:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дядя
**


Профиль
Группа: Участник
Сообщений: 323
Регистрация: 21.6.2005
Где: Москва, РФ

Репутация: 5
Всего: 12



Спасет GetModuleHandle() и GetModuleHandleEx()


--------------------
Если ты уже никого не боишься, значит ты самый страшный 
PM IM ICQ AOL YIM MSN   Вверх
AndreySol
Дата 3.8.2005, 06:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 772
Регистрация: 19.6.2004

Репутация: 1
Всего: 1



насчет GetModuleHandle() я так понял, что она возвращает HMODULE для библиотек уже загруженных в память, а мне так не подходит.
Мне тут на другом форуме подсказали про CoLoadLibrary() - но не могу заставить ее работать. Делал так:
Код

// инициализируем COM
CoInitialize(NULL);
//подготавливаем путь к файлу
CString NameFileOpen = "c:\\windows\\calc.exe";
WCHAR* wcFile = NULL;
char* szFileName = NameFileOpen.GetBuffer(NameFileOpen.GetLength());
USES_CONVERSION;
wcFile = A2W(szFileName);

HINSTANCE hExe = CoLoadLibrary(wcFile, FALSE);
if(hExe == NULL)
{
    MessageBox("Ошибка загрузки модуля !", "", MB_OK | MB_ICONERROR);
    CoFreeLibrary(hExe);
}

CoFreeLibrary(hExe);
// закрываем COM
CoUninitialize();

Что у меня неправильно ?

PM MAIL   Вверх
Earnest
Дата 3.8.2005, 06:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



CoLoadLibrary не любую библиотеку загружает. У нее должны быть специальные точки входа, не помню сейчас, как называются - предназначены для инициализации com-функций. И чем тебя LoadLibrary не устраивает? CoLoadLibrary сначала использует LoadLibrary (Ex) для загрузки библиотеки, а потом проводит дополнительную инициализацию.
ЗЫ
Если библиотека не загрузилась, какой смысл вызывать CoFreeLibrary? Что, по твоему, система может сделать с нулевым хандлом?



--------------------
...
PM   Вверх
AndreySol
Дата 4.8.2005, 06:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 772
Регистрация: 19.6.2004

Репутация: 1
Всего: 1



Earnest
Цитата

не любую библиотеку загружает

а так же и exe-шники.
Вот этим мне LoadLibrary (Ex) и не нравится.
Ведь должен же быть способ получить HMODULE для любого exe или dll файла !
PM MAIL   Вверх
Earnest
Дата 4.8.2005, 06:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



LoadLibraryEx загружает любую DLL или EXE. Если тебе это нужно для выполнения кода - может не получиться, т.к. при загрузке модуль пытается разрешать ссылки. Но если для выкапывания ресурсов или чего-то в этом роде - ставь флаг DONT_RESOLVE_REFERENCES, и все загрузится.


--------------------
...
PM   Вверх
Nastya
Дата 5.8.2005, 10:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 27.3.2002
Где: Мариуполь

Репутация: 1
Всего: 44



А зачем тебе незагруженная dll или exe? Я могу найти одну причину разбор заголовка.
Посмотри может что из этого поможет
http://www.rsdn.ru/article/baseserv/peloader.xml
http://www.rsdn.ru/?article/baseserv/peloader.xml


--------------------
Что бы понять рекурсию, надо понять рекурсию

"Профессионал - это человек сделавший все возможные ошибки в очень узкой области". Н.Бор
PM MAIL   Вверх
AndreySol
Дата 12.8.2005, 06:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 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) не загружается.
За ссылки спасибо, щас буду разбираться.

PM MAIL   Вверх
JoyEx
Дата 12.8.2005, 09:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дядя
**


Профиль
Группа: Участник
Сообщений: 323
Регистрация: 21.6.2005
Где: Москва, РФ

Репутация: 5
Всего: 12



Цитата(AndreySol @ 12.8.2005, 06:32)
Загруженная DLL или EXE мне нужна для использования ресурсов - LoadIcon, LoadCursor

Зачем заново "придумывать колесо"?
Воспользуйся LoadImage(,,,LR_LOADFROMFILE)


--------------------
Если ты уже никого не боишься, значит ты самый страшный 
PM IM ICQ AOL YIM MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0516 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.