CreateProcess не работает - PullRequest
       20

CreateProcess не работает

0 голосов
/ 26 октября 2011

У меня проблемы с получением следующего кода для работы в C ++ (консольное приложение VC ++).Он просто не создает процесс, но выводит текст ошибки.

static void main(){
    char *hotkeyexe = "cmd";
    PROCESS_INFORMATION pi;
    STARTUPINFO si;

    if(!CreateProcess(hotkeyexe, "", 0, 0, 0, 0, 0, 0, &si, &pi))
        printf("error");
        scanf("%d");
    }
}

Ответы [ 2 ]

3 голосов
/ 26 октября 2011

Вам нужно обнулить STARTUPINFO.

ZeroMemory(&si, sizeof(si));
1 голос
/ 26 октября 2011

Я цитирую MSDN :

Функция не будет использовать путь поиска. Этот параметр должен включать расширение имени файла; расширение по умолчанию не предполагается.

Так что вы не можете просто использовать cmd. Это будет зависеть от вашего рабочего каталога, если он будет работать. Если вы используете полный путь, он будет работать. Например, это рабочий пример на моей машине.

char *hotkeyexe = "c:\\Windows\\notepad.exe";
PROCESS_INFORMATION pi;
STARTUPINFO si;
ZeroMemory(&si, sizeof(si));

if(!CreateProcess(hotkeyexe, "", 0, 0, 0, 0, 0, 0, &si, &pi))
    printf("error");
scanf("%d");
...