我用CreateProcess打开一个控制台程序,该程序是多线程的,可是一直用CreateProcess()都没有成功,代码如下,还有,请问各位当是多线程的时候,SECURITY_ATTRIBUTES怎么设置啊,小弟没有找到相关的资料,请各位指教一下
         bool bCreat;
SECURITY_ATTRIBUTES   sa; STARTUPINFO si;
PROCESS_INFORMATION pi;

sa.nLength=sizeof(sa);
sa.bInheritHandle=true;
sa.lpSecurityDescriptor=NULL; bCreat=CreateProcess("D:\\MulApp.exe",NULL,&sa,&sa,true,NULL,NULL,NULL,&si,&pi);
一直返回0

解决方案 »

  1.   

    BOOL ret = CreateProcess(NULL, cCommandLine, 
    NULL, NULL, FALSE, 0, NULL, bcppath.c_str(), &si, &pi);
      

  2.   

    你用GetLastError()看看是什么错误呢?
      

  3.   

    CHAR strPath[_MAX_PATH];
    STARTUPINFO StartupInfo;
    PROCESS_INFORMATION ProcessInfo;

    _snprintf(strPath, _MAX_PATH-1, "%s%s", strWorkingDir, "\\***.exe");

    memset((void*)&StartupInfo, 0, sizeof(StartupInfo));
    memset((void*)&ProcessInfo, 0 ,sizeof(ProcessInfo));

    if(CreateProcess( NULL, strPath, NULL, NULL, FALSE, 0, NULL, NULL, &StartupInfo,  &ProcessInfo ))
    {
    CloseHandle(ProcessInfo.hThread);
    CloseHandle(ProcessInfo.hProcess);
    }
    else
    return -1;
      

  4.   

    tomcat_jb(老猫)的试了,还是不行,GetLastError()返回998,MSDN上写Invalid access to memory location.不明白为什么
      

  5.   

    tomcat_jb(老猫)的可以,刚再试了一下,路径的问题,有个新问题问一下,我怎样关闭这个进程?
    我用TerminateProcess(ProcessInfo.hProcess,uExitCode)好象不行
    我要的效果就是象在任务管理器中-》进程里结束进程的一样
    谢谢了