Загрузка DLL при создании процесса через CreateProcess()

Ответить

Код подтверждения
Введите код в точности так, как вы его видите. Регистр символов не имеет значения.

BBCode ВКЛЮЧЁН
[img] ВКЛЮЧЁН
[url] ВКЛЮЧЁН
Смайлики ОТКЛЮЧЕНЫ

Обзор темы
   

Развернуть Обзор темы: Загрузка DLL при создании процесса через CreateProcess()

TamerLAN » 11 фев 2006, 00:05

Прошу прощения за назойливость, но появился еще один вопрос, на который не могу никак найти полноценный ответ в мануалах: как можно добиться того, чтобы запуск программы через CreateProcess() НИКАК не зависел от родительского процесса? :?:
Дело в том, что я выпоняю следующий код:
STARTUPINFO si;
PROCESS_INFORMATION pi;

ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
ZeroMemory( &pi, sizeof(pi) );

CreateProcess("program.exe" ,
NULL,
NULL,
NULL,
FALSE,
CREATE_SUSPENDED,
GetEnvironmentStrings(),
NULL,
&si,
&pi )
)
Однако после запуска программы program.exe в ней не работают диалоговые окна. При обычном запуске через Explorer всё работает нормально... :shock:

TamerLAN » 10 фев 2006, 08:26

Спасибо за инфу! :)

Eugie » 09 фев 2006, 15:31

Все implicitly linked DLL подгружаются к моменту возврата из CreateProcess(). Есть одно исключение - DLL, в которых размещены hook procedures для глобальных хуков. Они подгружаются при 1-й выборке сообщения соотв.типа из message queue процесса.

Загрузка DLL при создании процесса через CreateProcess()

TamerLAN » 08 фев 2006, 15:29

В программе запускаю функцию CreateProcess с флагом CREATE_SUSPENDED. Никак не могу выяснить, подгружаются ли dll-ки к программе сразу при создании процесса или уже после, когда я "оживляю" его через ResumeThread :? В MSDN по этому поводу информации не нашёл. Может, кто знает... :wink:

Вернуться к началу