在新窗口启动控制台程序,并且最小化

  STARTUPINFO *si = new STARTUPINFO[nProcNum];
  PROCESS_INFORMATION *pi = new PROCESS_INFORMATION[nProcNum];
  int nCurNum = 0;
  string cPath;
  EnterCriticalSection(&m_mapCs);
  std::vector<ExeInfo>::iterator it = m_vctTask.begin();  // 启动任务
  for(; it!=m_vctTask.end(); it++)
  {
  	 // 如果是子目录
   	if(strlen(it->TaskPath) > 0)
  	 {
    		cPath = g_cRootDir + "\\" + it->TaskPath ;
    		SetCurrentDirectory(cPath.c_str());
    		sprintf(cCmdLine, "%s\\%s\\%s", g_cRootDir.c_str(),it->TaskPath,it->ExeName);
  	 }
   	// 否则在当前目录下
   	else
   	{
   		 sprintf(cCmdLine, "%s\\%s", g_cRootDir.c_str(),it->ExeName);
  	 }

  	ZeroMemory( &si[nCurNum], sizeof(si[nCurNum]) );
   	si[nCurNum].cb = sizeof(si[nCurNum]);
   	ZeroMemory( &pi[nCurNum], sizeof(pi[nCurNum]) );
   	// 设置启动最小化   	
 	si[nCurNum].dwFlags = STARTF_USESHOWWINDOW;
   	si[nCurNum].wShowWindow = SW_MINIMIZE;
   
	if(! ::CreateProcess (NULL, cCmdLine, NULL,    NULL, FALSE, CREATE_NEW_CONSOLE, NULL, NULL, &si[nCurNum],&pi[nCurNum]))
   	{
   		 //error
   		 sprintf(szLogBuf, "---%s(%d):[%s]启动[Process%d]失败,错误代码%d,请检查配置文件 \r\n", __FILE__, __LINE__, __FUNCTION__, nCurNum+1,GetLastError());
    		LOG4CPLUS_ERROR(m_oLog, szLogBuf);
    }
   	SetCurrentDirectory(g_cRootDir.c_str());
  	 nCurNum ++;
   	Sleep(100);
  }//end for 启动任务


 

 


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值