Всем привет! Мне нужно создать процесс с флагом CREATE_SUSPENDED | DEBUG_PROCESS | DEBUG_ONLY_THIS_PROCESS. Далее продолжить основной поток процесса. В этом hello.exe появляется сообщение (MessageBox). При запуске с вышеуказанными флагами ничего не появляется, а если оставить только флаг CREATE_SUSPENDED - тогда все нормально. Код (Text): #include <stdio.h> #include <windows.h> #include <winnt.h> int main() { bool bProcessCreated; // Флаг опеделяющий создания процесса STARTUPINFO stSI; PROCESS_INFORMATION stPI; char* MyFile="F:\\hello.exe"; ZeroMemory(&stSI, sizeof(STARTUPINFO)); ZeroMemory(&stPI, sizeof(PROCESS_INFORMATION)); // Создать процесс bProcessCreated=CreateProcess(MyFile, NULL, NULL, NULL, FALSE, CREATE_SUSPENDED | DEBUG_PROCESS | DEBUG_ONLY_THIS_PROCESS, NULL, NULL, &stSI, &stPI); ResumeThread(stPI.hThread); return 0; } Скажите, пожалуйста, что я не так делаю? PS: Делаю как сдесь: http://www.delphisources.ru/pages/faq/base/exploration_tracer2.html Сам файл: http://www.wasm.ru/pub/1/files/tut02.zip
Ну-ну Только учти, что без обработки WaitForDebugEvent процесс не запустится, т.к. система генерит первый дебаг-эвент задолго до запуска процесса - еще при загрузке ntdll, и соотв-но ждет пока ты на него отреагируешь, а ты видимо ждешь "у моря погоды"
PS: Чтобы что-то запустилось нужно хотя бы создать пустой цикл из WaitForDebugEvent + ContinueDebugEvent, а "на потом" оставить анализ и обработку конкретных эвентов