如何在程序中执行exe文件?
比如说要按一个按钮就执行另一个编译完成的可执行程序?

解决方案 »

  1.   

    HINSTANCE ShellExecute(          HWND hwnd,
        LPCTSTR lpOperation,
        LPCTSTR lpFile,
        LPCTSTR lpParameters,
        LPCTSTR lpDirectory,
        INT nShowCmd
    );
      

  2.   

    能否详细点?
    在MFC中有类或函数实现它吗?
      

  3.   

    CreateProcess()函数。
    用法请查找MSDN,函数说明实在是太长了。
      

  4.   

    STARTUPINFO si;
    PROCESS_INFORMATION pi;
    memset(&si, 0, sizeof(si));
    memset(&pi, 0, sizeof(pi));
    si.cb = sizeof(si);CreateProcess(NULL, “程序及路径”, NULL, NULL, FALSE, NORMAL_PRIORITY_CLASS, NULL, NULL, &si, &pi))
    凑合着用吧
      

  5.   

    SECURITY_ATTRIBUTES  sa;  
     HANDLE  hRead,hWrite;
     
    CString a,b,c;a = m_ShowFWName;
    b = COMStr;
    c = BaudRateStr;
    char temp[1024];
    sprintf(temp,"%s %s %s %s","prgflash.exe",a,b,c);
    //AfxMessageBox(temp); sa.nLength  =  sizeof(SECURITY_ATTRIBUTES);  
     sa.lpSecurityDescriptor  =  NULL;  
     sa.bInheritHandle  =  TRUE;  
     if  (!CreatePipe(&hRead,&hWrite,&sa,0))  {  
               MessageBox("Error  On  CreatePipe()");  
           return;  
     }    
     
     STARTUPINFO  si;  
     PROCESS_INFORMATION  pi;    
     si.cb  =  sizeof(STARTUPINFO);  
     GetStartupInfo(&si);    
     si.hStdError  =  hWrite;  
     si.hStdOutput  =  hWrite;  
     si.wShowWindow  =  SW_HIDE;  
     si.dwFlags  =  STARTF_USESHOWWINDOW    |  STARTF_USESTDHANDLES;  
     if  (!CreateProcess(NULL,(LPTSTR)temp,  
                 NULL,NULL,TRUE,NULL,NULL,NULL,&si,&pi))  {  
                 MessageBox("Error  on  CreateProcess()");  
                 return;  
     }
     CloseHandle(hWrite);  
     
     char  buffer[4096]  =  {0};  
     DWORD  bytesRead;    
     while  (true)  {  
             if  (ReadFile(hRead,buffer,4095,&bytesRead,NULL)  ==  NULL)  
                     break;  
             m_Edit1  +=  buffer; 
             //UpdateData(false); 
     if(strstr(buffer,"CRC comparison passed"))
     //AfxMessageBox("PASS");
     this->m_strCNResult = L"PASS";
     else
     this->m_strCNResult = L"FAIL";
     UpdateData(false);
             //Sleep(200);
     }