Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ CreateProcess()无法正常工作_C++_Winapi_Createprocess - Fatal编程技术网

C++ CreateProcess()无法正常工作

C++ CreateProcess()无法正常工作,c++,winapi,createprocess,C++,Winapi,Createprocess,我用这个代码来启动我的程序 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_ENVIRONM

我用这个代码来启动我的程序

     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;
}
int-tmain(int-argc,_-TCHAR*argv[]
{
STARTUPINFO到岸价;
ZeroMemory(&cif,sizeof(STARTUPINFO));
处理信息;
如果(CreateProcess)(L“C:\\test\\test.exe),则为NULL,
NULL,NULL,FALSE,CREATE_UNICODE_环境,NULL,NULL,&cif,&pi)==TRUE)
{

cout您必须将STARTUPINFO和PROCESS_信息的内存归零,并且必须设置STARTUPINFO结构的cb字段


复制是一个很好的开始。

您必须将STARTUPINFO和PROCESS_信息的内存归零,并且必须设置STARTUPINFO结构的cb字段


复制是一个很好的开始。

我发现问题,我没有为test.exe设置目录(CreateProcess中的第8个参数)。多亏了所有这些,我发现问题,我没有为test.exe设置目录(CreateProcess中的第8个参数)。感谢所有的

调试器告诉了您什么问题?您正在使用调试器,不是吗?哪个程序正在崩溃,这个代码正在启动新进程,或者
test.exe
?如果您传递
0
进程创建标志(而不是
创建UNICODE\u环境
),会发生什么情况?您正在将
CREATE\u UNICODE\u ENVIRONMENT
作为此标志传递,并将
NULL
传递给环境块,但您确定调用进程的环境块使用
UNICODE
字符吗?我发现问题,我没有为test.exe设置环境(CreateProcess中的第8个参数)幸亏all@bossman很好,添加它作为回答,让每个人都知道你是如何解决的。调试器告诉你哪里出了问题?你正在使用调试器,不是吗?哪个程序正在崩溃,这个代码正在启动新进程,或者
test.exe
?如果传递
0
进程创建标志,会发生什么(而不是
CREATE\u UNICODE\u ENVIRONMENT
)?您正在将
CREATE\u UNICODE\u ENVIRONMENT
作为此标志传递,并将环境块的
NULL
传递给环境块,但您确定调用进程的环境块使用
UNICODE
字符吗?我发现问题是我没有为test.exe设置环境(CreateProcess中的第8个参数)幸亏all@bossman很好,添加这一点作为答案,让每个人都知道你是如何解决的。没错,但OP几分钟前已经留下评论说他发现了问题。不设置cb字段可能不是一个好主意。它可能适用于他特定的Windows版本。不要期望它适用于早期或更高版本。或者在一个服务包之后。是的,但OP几分钟前已经留下评论说他发现了问题。不设置cb字段可能不是一个好主意。它可能适用于他的特定版本的Windows。不要期望它适用于早期或更高版本。或者在一个服务包之后。