VC++启动一个新的进程
2014-11-26 16:22
316 查看
//TCHAR szApplicationName[] = TEXT("UpdateMi.exe") ; TCHAR szCommandLine[MAX_PATH]; memset(szCommandLine,0,sizeof(szCommandLine)); lstrcpy(szCommandLine,_T("UpdateMi.exe "));//要启动的进程 lstrcat(szCommandLine,_T("TestProcess"));//传给刚启动的进程的参数 STARTUPINFO si = {sizeof(si)} ; PROCESS_INFORMATION pi ; BOOL bRet=CreateProcess( NULL,//NULL, // name of executable module szCommandLine, // command line string NULL, // process attributes NULL, // thread attributes FALSE, // handle inheritance option CREATE_UNICODE_ENVIRONMENT|CREATE_NEW_CONSOLE,//0, UNICODE版本下 // creation flags NULL, // new environment block NULL, // current directory name &si, // startup information &pi); // process information if(bRet) { CloseHandle(pi.hThread);// 关闭子进程的主线程句柄 CloseHandle(pi.hProcess);// 关闭子进程句柄 } //子进程有时需要在自己的程序中关闭父进程,可以在创建子进程时把父进程名称传进去 //关闭 CString cstrCmdLine=AfxGetApp()->m_lpCmdLine; MessageBox(cstrCmdLine); if(cstrCmdLine!=_T("")) { HWND hWndRun=::FindWindow(NULL,cstrCmdLine);//_T("Dialog"),_T("CLogonDlg") for(int i=0;i<5 && hWndRun!=NULL;i++)//多关闭几次 { ::PostMessage(hWndRun,WM_QUIT,0,0);//18 hWndRun = ::FindWindow(NULL,cstrCmdLine); Sleep(10); } } //第二种方法 //启动 SHELLEXECUTEINFO ShExecInfo; ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO); ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS ; ShExecInfo.hwnd = NULL; ShExecInfo.lpVerb =_T("runas") /*NULL*/; ShExecInfo.lpFile =_T("UpdateMi.exe"); //can be a file as well ShExecInfo.lpParameters =szCommandLine/*_T("PROCESS")*/; ShExecInfo.lpDirectory = NULL; ShExecInfo.nShow = SW_SHOW; ShExecInfo.hInstApp = NULL; ShellExecuteEx(&ShExecInfo); //关闭 if( ShExecInfo.hProcess != NULL) { TerminateProcess(ShExecInfo.hProcess,0); ShExecInfo.hProcess = NULL; }
相关文章推荐
- Vc 如何启动一个进程
- 在VC中启动另外一个程序(.exe、...)方法 (转载)
- 监视一个指定进程是不是启动
- 启动一个进程,并让他等待接收消息
- vc++创建一个进程
- 我在delphi中用shellExecute启动了一个程序(ftp);然后想做一个等待,只到ftp进程结束,再继续下面的操作,请问如何监控这个进程是否已结束?
- vc-让一个窗口默默地启动(vc)
- ring0启动一个Win32进程 【译文】
- 转:解决VC2005程序的一个运行错误“由于应用程序的配置不正确,应用程序未能启动,重新安装应用程序可能会纠正这个问题”
- 一个JVM进程启动后里面有几个线程
- 解决VC2005程序的一个运行错误“由于应用程序的配置不正确,应用程序未能启动"
- 从核心模式启动一个进程----怎样从内部的驱动程序启动一个Win32进程
- C#程序多用户只启动一个进程的方法
- 让一个程序运行一次,在它运行时,不允许再启动一个新的进程。
- 启动一个进程并处理进程结束事件
- 启动一个进程并处理进程结束事件
- 启动一个进程
- 在VC中如何结束进程和启动新进程?
- 在VC中实现一次执行一个进程,如果同时打开两个,则报该程序已经运行
- C#只允许启动一个WinFrom进程的两种方法