Ошибка 2: ERROR_FILE_NOT_FOUND
. Вы передаете путь к notepad.exe
в параметре lpCurrentDirectory
, но вместо этого он должен быть передан в параметре lpApplicationName
или lpCommandLine
:
CreateProcessA("C:\\Windows\\notepad.exe", NULL, NULL, NULL, FALSE, NULL, NULL, NULL, &startInfo, &processInfo)
CreateProcessA(NULL, "C:\\Windows\\notepad.exe", NULL, NULL, FALSE, NULL, NULL, NULL, &startInfo, &processInfo)
Также вы вызов GetLastError()
, когда CreateProcessA()
успешно. Вы должны вызвать его, когда вместо CreateProcessA()
произойдет сбой:
if (!CreateProcessA(...)) { // <-- note the !
DWORD Error = GetLastError();
...
}
Наконец, спецификатор %d
для printf()
ожидает int
, а не DWORD
. Вместо этого используйте %ul
, что предполагает unsigned long
, то есть DWORD
определяется как :
printf("%ul", Error);