怎么判断WinExec(...)调用的程序是否执行完毕?

AceZLB 2002-04-27 02:35:10
程序里面要连着调用两个外部程序,第二个要用第一个运行的结果(生成的文件),一步一步走没有问题,两个同时执行就会出错,百思之后才知,原来第一个程序的结果并没有出来就开始运行第二个,所以没有输入。

程序里面怎么查询第一个命令的状态?
确认执行完毕之后再执行第二个。

我现在简单的在第二个命令前面插入了一个大循环,也可以达到等待的目的,但是CPU狂转不止。
MFC里面有没有插入等待的函数?

谢了。
...全文
642 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
mryinliang 2002-05-09
  • 打赏
  • 举报
回复
用CreateProcess创建进程,
再用WaitForSingleObject判断返回的进程句柄,有信号了,表示进程结束
sunshine_shen 2002-05-09
  • 打赏
  • 举报
回复
用CreateProcess 可以解决
clin2y 2002-05-09
  • 打赏
  • 举报
回复
用一种比较笨的办法:
在winexec(A)中;在A的程序里产生一个文件,然后判断此文件是否已经存在了,如果已经存在了,表明winexec()执行完毕。最后删除此文件以被下次查询使用

cvip11 2002-04-29
  • 打赏
  • 举报
回复
up!!
clin2y 2002-04-29
  • 打赏
  • 举报
回复
我曾经也为WinExec()苦劳过/
AceZLB 2002-04-27
  • 打赏
  • 举报
回复
hao, woshishi.
jishiping 2002-04-27
  • 打赏
  • 举报
回复
用 CreateProcess 才可以实现,最后的参数PROCESS_INFORMATION有个成员
hProcess。用WaitForSingleObject(xxx.hProcess, INFINITE)等待。
AceZLB 2002-04-27
  • 打赏
  • 举报
回复
这么说吧,用system(...)的话,查询到返回值的时候肯定是真的返回了,
磁盘也写完了。而用WinExec(..., ...)的时候返回时有返回值但并没有写磁盘。

CreateProcess()中可以解决这个问题吗?
能用WinExec解决掉最好了,简单。
111222 2002-04-27
  • 打赏
  • 举报
回复
CreateProcess或者ShellExecuteEx

其中参数中有个hProcess的句柄

用WaitForSingleObject.......
doghead 2002-04-27
  • 打赏
  • 举报
回复
这涉及进程同步问题,应该用CreateProcess(),这样可以控制进程及通讯,
具体方法你可以参考MSDN.
AceZLB 2002-04-27
  • 打赏
  • 举报
回复
这些msdn里面我也看到了,可是现在的事实是:
我就是查询返回值是否大于31,
文件确实没有生成出来,程序已经返回了。真叫郁闷!
可能是写磁盘有时间延迟?
SlaSk 2002-04-27
  • 打赏
  • 举报
回复
If the function fails, the return value is one of the following error values:
//如果失败,它的返回值将会是如下之一:

Value
返回0
The system is out of memory or resources.
ERROR_BAD_FORMAT The .EXE file is invalid (non-Win32 .EXE or error in .EXE image).
返回ERROR_FILE_NOT_FOUND
The specified file was not found.
返回ERROR_PATH_NOT_FOUND
The specified path was not found.
SlaSk 2002-04-27
  • 打赏
  • 举报
回复
If the function succeeds, the return value is greater than 31.
//如果成功,它的返回值降大于31.
//所以自己判断看看就知道了.

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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