在控制台程序的函数中使用ExitProcess函数,退出函数,调用者接收返回值:
DWORD nResult;
SHELLEXECUTEINFO ShExeInfo = { 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)返回指定的值
调用控制台注册组件
VOID RegisterReportCom()
{
SHELLEXECUTEINFO ShExecInfo = { 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");
CString strPath = 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);
}
转载于:https://blog.51cto.com/9233403/2110636