CreateProcess () не работает должным образом - PullRequest
0 голосов
/ 02 ноября 2011

Я использую этот код для запуска моей программы

     int _tmain(int argc, _TCHAR* argv[])
{
    STARTUPINFO cif;
    ZeroMemory(&cif,sizeof(STARTUPINFO));
    PROCESS_INFORMATION pi;
    if (CreateProcess(L"C:\\test\\test.exe",NULL,
        NULL,NULL,FALSE,CREATE_UNICODE_ENVIRONMENT,NULL,NULL,&cif,&pi)==TRUE)
    {
        cout << "process" << endl;
        cout << "handle " << pi.hProcess << endl;
    }
    system("pause");
    return 0;
}

Программа запускается в обычном режиме, но сразу дает сбой (не отвечает и дает сбой). CreateProcess возвращает true. Когда я запускаю test.exe не из кода, он работает правильно.

Ответы [ 2 ]

5 голосов
/ 02 ноября 2011

Необходимо обнулить память STARTUPINFO и PROCESS_INFORMATION, а также установить поле cb структуры STARTUPINFO.

Копирование образца кода в документации Microsoft являетсяхорошее место для начала.

0 голосов
/ 03 ноября 2011

Я обнаружил проблему, из-за которой я не установил каталог для test.exe (8-й аргумент в CreateProcess). Спасибо всем

...