Загрузка DLL при создании процесса через CreateProcess()
Модераторы: Duncon, Hawk, Romeo, Eugie
В программе запускаю функцию CreateProcess с флагом CREATE_SUSPENDED. Никак не могу выяснить, подгружаются ли dll-ки к программе сразу при создании процесса или уже после, когда я "оживляю" его через ResumeThread :? В MSDN по этому поводу информации не нашёл. Может, кто знает... 
Все implicitly linked DLL подгружаются к моменту возврата из CreateProcess(). Есть одно исключение - DLL, в которых размещены hook procedures для глобальных хуков. Они подгружаются при 1-й выборке сообщения соотв.типа из message queue процесса.
Спасибо за инфу! 

Прошу прощения за назойливость, но появился еще один вопрос, на который не могу никак найти полноценный ответ в мануалах: как можно добиться того, чтобы запуск программы через 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:
Дело в том, что я выпоняю следующий код:
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: