VC++启动一个新的进程

	//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;
  } 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值