【发布时间】:2013-05-12 11:33:36
【问题描述】:
这是我的代码。我总是收到错误 3,我该怎么办?我尝试用 CreateProcessA 替换 CreateProcces,替换前两个参数,尝试处理其他程序,但它仍然不起作用。谢谢。
#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,我做错了什么?
我放置:
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);
有什么区别?
【问题讨论】:
-
你的 if 测试有点奇怪。
CreateProcess如果成功则返回一个非零值,因此最好不要使用==TRUE。 -
你怎么知道它失败了?你不是在测试返回值。
-
@paulm 第一,notepad.exe没有执行,第二,getlasteeror返回代码错误3,我做错了什么?
-
如果没有失败则GetLastError的值没有意义
标签: winapi createprocess