Проблема в нестабильности внедрения длл. Создаю процесс, через CreateProcess с атрибутом CREATE_SUSPENDED, выдерживаю паузу SLEEP, без нее часто происходит аварийное завершение процесса, он не успевает проинициализироваться, а внедрение уже начилось далее делаю внедрение длл через CreateRemoteThread, потом ResumeThread. Чем заменить SLEEP? В API рекомендуеться использовать WaitForInputIdle, но я создаю SUSPENDED процесс и она просто и тупо выжидает заданое время, т.е. работает как SLEEP.
Ну верно рекомендуют: WaitForInputIdle(hProcess, INFINITE). Будет ждать пока не закончится инициализация.
Посмотрел MSDN. Так вот, если поставить WaitForInputIdle(hProcess, INFINITE), то прога, просто зациклится, WaitForInputIdle будет ожидать окончания инициализации процесса, причем только GUI! А suspended процесс WaitForInputIdle не считает за нормальный процесс, ведь инициализируется лишь главный поток. Пробовал WaitForSingleObject тоже не работает.