Вот мой код. Я всегда получаю ошибку 3, что я могу сделать? Я попытался заменить CreateProcces на CreateProcessA, заменив первый два параметра, попробуйте обработать другую программу, но она все еще не работает. Спасибо.CreateProcess, winapi, код ошибки 3
#include "windows.h"
#include <iostream>
void main() {
STARTUPINFOA cif;
ZeroMemory(&cif,sizeof(cif));
PROCESS_INFORMATION pi;
CreateProcessA("","C:\\Windows\\notepad.exe",NULL,NULL, NULL,NULL,NULL,NULL,&cif,&pi);
DWORD error=GetLastError();
std::cout << "error " << error << "\n";
while(1) {} // подождать
}
Да, вы прав. Я исправил его, но он все еще возвращает код ошибки 3. Во-первых, notepad.exe не выполняется, во-вторых, getlasteeror возвращает ошибку кода 3, что я сделал не так?
I место:
char* path="C:\\Windows\\notepad.exe";
CreateProcessA(path,"sfvfd",NULL,NULL,NULL,NULL,NULL,NULL,&cif,&pi);
вместо (и это сработало!):
CreateProcessA("","C:\\Windows\\notepad.exe",NULL,NULL,
NULL,NULL,NULL,NULL,&cif,&pi);
В чем разница?
Ваш тест немного странный. 'CreateProcess' возвращает ненулевое значение, если оно преуспевает, поэтому вам будет лучше потерять' == TRUE'. – ChrisF
Откуда вы знаете, что это не удается? Вы не проверяете возвращаемое значение. – paulm
@paulm Во-первых, notepad.exe не выполняется, во-вторых, getlasteeror возвращает ошибку кода 3, что я сделал не так? – Robert