WaitForSingleObject的问题,不知道那位可以解答

jmylf 2003-08-16 03:59:58
//执行外部程序,等待结束
void sinstep(char *execname){
char ln[100];
int Make;
char str[100]="";
char *tip="不能执行程序:";
sprintf(ln,"%s\\%s",GetCurrentDir().c_str(),execname);
char path[100];
sprintf(path,"%s",GetCurrentDir().c_str());
chdir(path);
//ShowMessage(ln);
STARTUPINFO startinfo;
PROCESS_INFORMATION procInfo;
strcat(str,tip);
strcat(str, ln);
GetStartupInfo(&startinfo);
startinfo.dwFlags =STARTF_USESHOWWINDOW;
startinfo.wShowWindow=SW_HIDE ;
Make=CreateProcess(NULL,ln,NULL,NULL,false,0,NULL,NULL,&startinfo,&procInfo);
if (!Make)
{
MessageBox(NULL, str, "提示", MB_OK);
}
Form1->Memo1->Lines->Add("正在执行.....");
Form1->Memo1->Lines->Add(execname);
WaitForSingleObject(procInfo.hProcess, INFINITE);
Form1->Memo1->Lines->Add("执行结束");
}

我想实现底是在等待外部程序执行结束底时候能够作个进度条,不知道如何获取外部程序的执行时间。不然进度条画的也没什么意思,现在只好搞个memo,上面写两句话
...全文
29 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
jmylf 2003-08-18
  • 打赏
  • 举报
回复
可能只有在程序运行的时候一直的循环progressbar,直到结束了
jishiping 2003-08-17
  • 打赏
  • 举报
回复
这个问题和WaitForSingleObject无关吧。“如何获取外部程序的执行时间”,这是没有办法
知道的。即使是程序本身,一般来说,也没有办法事先知道什么时候结束。比如,Windows自
带的“记事本”(Notepad.exe),一旦运行后,谁知道什么时候会结束?如果电脑一直开着,
也没有人(没有任何程序)强迫结束它,那么它一直运行着,永远也不会结束。
jmylf 2003-08-16
  • 打赏
  • 举报
回复
谁做过来帮个忙吧
jmylf 2003-08-16
  • 打赏
  • 举报
回复
不能用多线程,必须等上个程序结束后才能执行下一步,看来没有办法了
woainihaha 2003-08-16
  • 打赏
  • 举报
回复
没有办法知道其他进程的执行时间.
PLLKing 2003-08-16
  • 打赏
  • 举报
回复
我看还是弹出个等待窗口(用多线程)吧,因为很多程序,它自己都不知道具体的执行进度,你怎么能取到呢?
jmylf 2003-08-16
  • 打赏
  • 举报
回复
怎么没有人作么?

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧