Bill_Prisoner А какие с проблемы с импортируемыми "dll" функциями? Мой пример работает на 98SE, 2K и XPSP2.
S_T_A_S_ Я не про ОС. А про то, что ты вызываешь MessageBox из DLL(EXE). MessageBox находиться в user32.dll. А user32.dll есть уже в АП процесса, которая загружает DLL. Если бы ее так не было, то адрес MessageBox не заполнился бы загрузиком.
Гм. Ну конечно же user32.dll есть в адресном пространстве. Она импортируется из hello.exe (которая "dll"). hello.exe статически прилинкована к helloclient.exe (которая не импортирует user32.dll). Поэтому загрузчик и резолвит импорт, остаётся только исправить релоки - вот это единственная проблема, основной exe должен обязательно вызвать fixup. А если нужна динамическиая загрузака dll - тогда совсем непонятно, откуда проблемы надуманы - ну будешь далать не один LoadLibrary, а 2, добавить ещё код для резолва импортов... зато так можно будет и не только PE файлы загружать, но какие хошь %)
Как я понял основное назначение ЕХЕ&ДЛЛ в том чтоб запустить ДЛЛ кликом.. Для этого можно использовать CPL файлики.. _936775072__simpler.zip
S_T_A_S_ Все правильно. Просто я понял вопрос так - может dll быть и exe в классическом смысле. Маленькие проблемы с импортом и релоками не дают этой dll называться настоящей - т.е. нормальные DLL с флагом. Естесстевенно если эти недочеты убрать, то exe может быть и dll.
Попробуй следующий вариант: 1)Загрузи DLL.EXE с помощью CreateProcess или WinExec 2)Получи его hModule с помощью GetModuleHandle("DLL.EXE")-это та-же величина что возвращает LoadLibrary 3)Получи процедуру через GetProcAddress и спокойно запускай 4)Выгрузить DLL.EXE с помощью TerminateProcess Этот способ позволяет не только запускать чужие функции,но и тырить ресурсы с помощью LoadResurse из любого(!!!) в данный момент запущенного приложения.