我的文件夹是这个的,-----SPMDS
                         -----debug
                              ------SPMDS.exe
                    -----thesis
                         -----debug
                              ------thesis.exe
                    -----dataofDB.data
                    -----resultofMining.data
现用在thesis的程序里调用spmds.exe,并且用到那两个data文件
我的程序是这样写的
STARTUPINFO si;
PROCESS_INFORMATION ProcessInformation;
si.wShowWindow = SW_SHOW;
memset(&si,0,sizeof(STARTUPINFO));  //数据初始化 char cmdName[] = "";
char cmdLine[] = "..\\SPMDS\\debug\\SPMDS.exe 50  179 ..\\DataOfDB.data ..\\ResultofMining.data";

 if(CreateProcess(NULL,cmdLine,NULL,NULL,false,CREATE_NEW_CONSOLE,NULL,NULL,&si,&ProcessInformation))
 printf("successed");
现在很奇怪的是感觉那个被调用的程序有时执行有时不执行,就是有时会一闪就过去了,总是打印successed,但是正常的情况下spmds.exe是要执行一段时间的,
  不知道问题出在哪里,相对路径有没有写错呀,还是别的原因呀,大家帮看一看,高手们帮帮忙呀!在线等呀。

解决方案 »

  1.   

    用这段代码试试:STARTUPINFO StartupInfo;
    PROCESS_INFORMATION ProcessInfo;
    memset(&StartupInfo,0,sizeof(STARTUPINFO));
    StartupInfo.cb=sizeof(STARTUPINFO);
    StartupInfo.lpReserved=NULL;
    StartupInfo.lpDesktop=NULL;
    StartupInfo.lpTitle=NULL;
    StartupInfo.dwFlags=STARTF_USESHOWWINDOW;
    StartupInfo.cbReserved2=0;
    StartupInfo.lpReserved2=NULL;
    StartupInfo.wShowWindow=SW_SHOWNORMAL;CString filename;
    ((CEdit*)GetDlgItem(IDC_COMBO1))->GetWindowText(filename);
    char strFileName[255];
    sprintf(strFileName,"%s",filename);
    bool bReturn=CreateProcess(NULL,strFileName,NULL,NULL,false,0,NULL,NULL,&StartupInfo,&ProcessInfo);
    if(!bReturn)
        MessageBox("进程创建失败!");
      

  2.   

    "..\\SPMDS\\debug\\SPMDS.exe 50  179 ..\\DataOfDB.data ..\\ResultofMining.data";
    ---------------------------
     "..\\SPMDS\\debug\\SPMDS.exe 50  179 ..\\..\\DataOfDB.data ..\\..\\ResultofMining.data";
      

  3.   

    ToperRay(绿皮狼) ( ) 信誉:98    Blog 
    强,不过别搞错对象喔
      

  4.   

    相对路径,按LS的写法另外可以参照下MSDN的例子( 主要是互斥,可能有影响 )void main( VOID )
    {
        STARTUPINFO si;
        PROCESS_INFORMATION pi;    ZeroMemory( &si, sizeof(si) );
        si.cb = sizeof(si);
        ZeroMemory( &pi, sizeof(pi) );    // Start the child process. 
        if( !CreateProcess( NULL, // No module name (use command line). 
            "MyChildProcess", // Command line. 
            NULL,             // Process handle not inheritable. 
            NULL,             // Thread handle not inheritable. 
            FALSE,            // Set handle inheritance to FALSE. 
            0,                // No creation flags. 
            NULL,             // Use parent's environment block. 
            NULL,             // Use parent's starting directory. 
            &si,              // Pointer to STARTUPINFO structure.
            &pi )             // Pointer to PROCESS_INFORMATION structure.
        ) 
        {
            ErrorExit( "CreateProcess failed." );
        }    // Wait until child process exits.
        WaitForSingleObject( pi.hProcess, INFINITE );    // Close process and thread handles. 
        CloseHandle( pi.hProcess );
        CloseHandle( pi.hThread );
    }好像另外的没什么问题,把代码全帖出来吧
      

  5.   

    ToperRay(绿皮狼) 为火星人, 鉴定完毕 !
      

  6.   

    CreateProcess()创建的子进程是以创建它的进程所在路径做为环境变量的,也就是说,如果A创建了B,在使用默认参数的情况下, B的相对路径并不是B所在的路径,而是创建它的A所在的路径.可以通过参数改变,也可以使用绝对路径
      

  7.   

    楼上说的不错,如果为简单,而且不需参数的话,可以用system()函数
      

  8.   

    谢谢大家帮忙了,现在好像可以了,把CREATE_NEW_CONSOLE改0就行了,谢谢了