CreateProcess("C:\\win95\\notepad.exe",
"readme.txt",NULL,NULL,FALSE,
CREATE_DEFAULT_ERROR_MODE,NULL,
"C:\\WIN95",NULL,NULL);

解决方案 »

  1.   

    朋友:
         我可不想你失望,真是挺可怜的.我也经常遇到你地情况.
         我的程序很简单,只是时间急,随便从我的程序中拷了一点,
         它是用来打开一个安装程序的,并且通过WM_TIMER事件来监视
         他是否退出了.
         怎么样,我这个朋友还不错吧,希望我以后也能有你这样的好运.
    void CLoadAppDlg::OnButton1() 
    {
     PROCESS_INFORMATION  pi;
     ZeroMemory(&pi,sizeof(PROCESS_INFORMATION));
     STARTUPINFO si;
     ZeroMemory(&si,sizeof(STARTUPINFO));
         si.cb=sizeof(STARTUPINFO);
     si.wShowWindow=SW_SHOW;
     si.dwFlags=STARTF_USESHOWWINDOW;
     BOOL fRet=::CreateProcess("d:\\project\\hmis\\debug\\hmis.exe",
     NULL/*"c:\\windows\\notepad.exe c:\\autoexec.bat"*/,
     NULL,
     NULL,
     FALSE,
     NORMAL_PRIORITY_CLASS|CREATE_NEW_CONSOLE,
     NULL,
     NULL,
     &si,
     &pi);
     if(fRet)
     {m_hProcess=pi.hProcess; 
          this->ShowWindow(SW_HIDE); 
      SetTimer(1,100,NULL);
     }
    }void CLoadAppDlg::OnTimer(UINT nIDEvent) 
    {   DWORD dwExitCode; 
        if(::GetExitCodeProcess(m_hProcess,&dwExitCode))
    {
    if(dwExitCode!=STILL_ACTIVE)

        CloseHandle(m_hProcess);
                this->ShowWindow(SW_SHOW); 
    KillTimer(1);
    }
    }
    CDialog::OnTimer(nIDEvent);
    }
      

  2.   

    朋友:
         我可不想你失望,真是挺可怜的.我也经常遇到你地情况.
         我的程序很简单,只是时间急,随便从我的程序中拷了一点,
         它是用来打开一个安装程序的,并且通过WM_TIMER事件来监视
         他是否退出了.
         怎么样,我这个朋友还不错吧,希望我以后也能有你这样的好运.
    void CLoadAppDlg::OnButton1() 
    {
     PROCESS_INFORMATION  pi;
     ZeroMemory(&pi,sizeof(PROCESS_INFORMATION));
     STARTUPINFO si;
     ZeroMemory(&si,sizeof(STARTUPINFO));
         si.cb=sizeof(STARTUPINFO);
     si.wShowWindow=SW_SHOW;
     si.dwFlags=STARTF_USESHOWWINDOW;
     BOOL fRet=::CreateProcess("d:\\project\\hmis\\debug\\hmis.exe",
     NULL/*"c:\\windows\\notepad.exe c:\\autoexec.bat"*/,
     NULL,
     NULL,
     FALSE,
     NORMAL_PRIORITY_CLASS|CREATE_NEW_CONSOLE,
     NULL,
     NULL,
     &si,
     &pi);
     if(fRet)
     {m_hProcess=pi.hProcess; 
          this->ShowWindow(SW_HIDE); 
      SetTimer(1,100,NULL);
     }
    }void CLoadAppDlg::OnTimer(UINT nIDEvent) 
    {   DWORD dwExitCode; 
        if(::GetExitCodeProcess(m_hProcess,&dwExitCode))
    {
    if(dwExitCode!=STILL_ACTIVE)

        CloseHandle(m_hProcess);
                this->ShowWindow(SW_SHOW); 
    KillTimer(1);
    }
    }
    CDialog::OnTimer(nIDEvent);
    }
      

  3.   

    to 虎:你的createprocess同样返回0
      

  4.   

    STARTUPINFO stinfo;
       ZeroMemory((void*)&stinfo, sizeof(STARTUPINFO));
        PROCESS_INFORMATION ProcessInfo;
        LPSTR sExefile = "d:\\supercall.exe";
        stinfo.cb = sizeof(STARTUPINFO);
        stinfo.dwFlags = STARTF_USESHOWWINDOW;
        stinfo.wShowWindow = SW_SHOW;
        if ( !CreateProcess(sExefile,sExefile,NULL,NULL,false,0,
        NULL,NULL,&stinfo,&ProcessInfo) )
    {
          DWORD dwRet = GetLastError();
    }
      

  5.   

        bool bOk;
        STARTUPINFO    si ;
        PROCESS_INFORMATION  pi ;
        char cName[100] = "C:\\windows\\Notepad.exe";
        memset (&si, 0, sizeof (STARTUPINFO)) ;
        si.cb = sizeof (STARTUPINFO) ;
        si.dwFlags = STARTF_USESHOWWINDOW ;
        si.wShowWindow = SW_SHOWNOACTIVATE ;
        memset (&pi, 0, sizeof (PROCESS_INFORMATION));
        bOk = CreateProcess(NULL,cName,NULL,NULL,FALSE,
    (DWORD) NORMAL_PRIORITY_CLASS,NULL,NULL,&si, &pi);
      

  6.   

    createprocess在APP类的INITINSTANCE中执行,可以吗?
      

  7.   

    BOOL CProcessdbApp::InitInstance()
    {
    // Standard initialization
    // If you are not using these features and wish to reduce the size
    //  of your final executable, you should remove from the following
    //  the specific initialization routines you do not need. /*CProcessdbDlg dlg;
    m_pMainWnd = &dlg;
    int nResponse = dlg.DoModal();
    if (nResponse == IDOK)
    {
    // TODO: Place code here to handle when the dialog is
    //  dismissed with OK
    }
    else if (nResponse == IDCANCEL)
    {
    // TODO: Place code here to handle when the dialog is
    //  dismissed with Cancel
    }
    */
        PROCESS_INFORMATION  pi;
        ZeroMemory(&pi,sizeof(PROCESS_INFORMATION));
        STARTUPINFO si;
        ZeroMemory(&si,sizeof(STARTUPINFO));
    si.cb=sizeof(STARTUPINFO);
        si.wShowWindow=SW_SHOW;
        si.dwFlags=STARTF_USESHOWWINDOW;
        BOOL fRet=CreateProcess("c:\\windows\\notepad.exe  c:\\autoexec.bat",NULL,NULL,NULL,FALSE,NORMAL_PRIORITY_CLASS|CREATE_NEW_CONSOLE,NULL,NULL,&si,&pi);
      
    // Since the dialog has been closed, return FALSE so that we exit the
    //  application, rather than start the application's message pump.
    DWORD j=GetLastError();
    return FALSE;
    }
    上面是我的代码,fret返回总是0,j返回2:参数错误!
      

  8.   

    LaunchApplication(LPCTSTR pCmdLine, PROCESS_INFORMATION *pProcessInfo)
    {
        STARTUPINFO stStartUpInfo;    memset(&stStartUpInfo, 0, sizeof(STARTUPINFO));    stStartUpInfo.cb = sizeof(STARTUPINFO);    stStartUpInfo.dwFlags = STARTF_USESHOWWINDOW;
        stStartUpInfo.wShowWindow = SW_SHOWDEFAULT;    return CreateProcess(NULL, (LPTSTR)pCmdLine, NULL, NULL, FALSE,
            NORMAL_PRIORITY_CLASS, NULL,
            NULL, &stStartUpInfo, pProcessInfo);
    }其中pCmdLine为可执行程序文件名, pProcessInfo为得到的创建的进程的信息。