在控制台程序的函数中使用ExitProcess函数,退出函数,调用者接收返回值:

DWORDnResult;SHELLEXECUTEINFOShExeInfo={0};ShExeInfo.cbSize=sizeof(SHELLEXECUTEINFO);ShExeInfo.fMask=SEE_MASK_NOCLOSEPROCESS;ShExeInfo.hwnd=NULL;ShExeInfo.lpVerb=NULL;ShExeInfo.lpFile=_T("a.exe");ShExeInfo.lpParameters=_T("1");ShExeInfo.lpDirectory=NULL;ShExeInfo.nShow=SW_HIDE;ShExeInfo.hInstApp=NULL;ShellExecuteEx(&ShExeInfo);WaitForSingleObject(ShExeInfo.hProcess,1000*120);GetExitCodeProcess(ShExeInfo.hProcess,&nResult);//被调用进程用ExitProcess(0)返回指定的值

调用控制台注册组件

VOIDRegisterReportCom(){SHELLEXECUTEINFOShExecInfo={0};ShExecInfo.cbSize=sizeof(SHELLEXECUTEINFO);ShExecInfo.fMask=SEE_MASK_NOCLOSEPROCESS;ShExecInfo.hwnd=NULL;ShExecInfo.lpVerb=_T("runas");ShExecInfo.lpFile=_T("C:/Windows/SysWOW64/regsvr32.exe");CStringstrPath=GetApplicationPath()+_T("gregn6.dll/s");ShExecInfo.lpParameters=strPath;ShExecInfo.lpDirectory=NULL;ShExecInfo.nShow=SW_HIDE;ShExecInfo.hInstApp=NULL;ShellExecuteEx(&ShExecInfo);strPath=GetApplicationPath()+_T("grdes6.dll/s");ShExecInfo.lpParameters=strPath;ShellExecuteEx(&ShExecInfo);}