我在一个工程里创建一个进程, 进程创建成功,创建函数CreateProcess返回TRUE,但是我创建的这个进程vega.exe在任务管理器中却看不到,这到底是创建成功了还是没创建成功!我单独运行这个vega.exe程序是可以运行的,说明vega.exe程序没有问题,但是用创建进程的方法却启动不了,这是为什么呢?希望大家帮帮我啊!    void CMainDlg::OnBtnStart() 
    {
char ss[400];
char ff[500];
CString s;
HWND hWnd;
m_edit1.GetWindowText(s1);
strcpy(ss, s.GetBuffer(s.GetLength()));
s1.ReleaseBuffer(); sprintf(ff,"H:\\视景\\winmain1\\vega\\Debug\\vega.exe %s",ss);
STARTUPINFO sui;
PROCESS_INFORMATION pi;
ZeroMemory(&sui, sizeof(STARTUPINFO));
sui.cb = sizeof(STARTUPINFO);
if(!CreateProcess(_T("H:\\视景\\winmain1\\vega\\Debug\\vega.exe"),
_T(ff), NULL, NULL, FALSE, 0, NULL, NULL, &sui, &pi)) 
{
return;
}
CloseHandle(pi.hThread);
CloseHandle(pi.hProcess);
    }

解决方案 »

  1.   

    if(!CreateProcess(_T("H:\\视景\\winmain1\\vega\\Debug\\vega.exe"), 
    _T(ff), NULL, NULL, FALSE, CREATE_NEW_CONSOLE, NULL, NULL, &sui, &pi)) 
    第六个参数你设为了NULL,当然看不到,只是寄生在它的父进程中,你必须得创建一个新的控制台!
      

  2.   

    第6个参数设NULL是优先级用的吧?这个...怎么变成寄生了?
      

  3.   

    对了,你的工程是Unicode还是ANSI的?
      

  4.   

    我很想知道,你这个vega.exe 正常点击的话,是不是一闪就没了呢?怀疑进程自己退出了,所以看不到。
      

  5.   


    vega.exe 这个程序正常点击的话不会一闪就没了,这个是视景程序,会正常运行的!
      

  6.   

    ff里面已经包含了程序路径,第一个参数应该传NULL
    CreateProcess(NULL, ff, NULL, NULL, FALSE, 0, NULL, NULL, &sui, &pi)
    _T(ff)这个写法不对,在Unicode环境下会被替换为Lff,编译会出错
      

  7.   

     先简单winexe看能不能运行