Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2341797
  • 博文数量: 816
  • 博客积分: 10000
  • 博客等级: 上将
  • 技术积分: 5010
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-17 17:57
文章分类

全部博文(816)

文章存档

2011年(1)

2008年(815)

分类:

2008-12-17 18:04:34

如果调用你的程序无法修改,并且调用你的程序是用的等待程序结束再继续执行,需要用第三个程序来解决。

程序 A: 调用你的程序的主程序
程序 B: 你现在编的程序
程序 C: 再做一个程序

现在的方案是:
程序 A: 不做修改。让 A 调用 C, 等 C 结束时 A 才能继续运行。
程序 B: 不做修改。
程序 C: 调用程序 B,然后继续运行,即可以在 B 执行时自动退出,这时 A 会继续运行

正常执行调用程序都是不等待程序的结束,如果要等待程序的结束需要另外编程序。
下面的程序是等待程序结束的方法,如果你不需要等待,if 里面的循环就不需要了,去掉就可以了。

STARTUPINFO sinf;
PROCESS_INFORMATION pinf;
memset(&sinf,0,sizeof(STARTUPINFO));

//调用 sFileName 执行
if(CreateProcess(sFileName.c_str(),sCmdLine.c_str(),NULL,NULL,false,CREATE_DEFAULT_ERROR_MODE,NULL,NULL,&sinf,&pinf))
{
  //执行成功,用下面的循环等待 sFileName 程序执行结束
  unsigned long iExCode;
  while(GetExitCodeProcess(pinf.hProcess,&iExCode))
   {
     if(iExCode!=STILL_ACTIVE) //如果 sFileName 程序执行结束了
       break; //结束循环,停止等待
     Application->ProcessMessages(); //在等待时为了避免程序停止反应,调用这个函数
   }
}

--------------------next---------------------

阅读(1066) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~