如何知道VB调用的外部程序已经结束运行
如图,我打算用VB编制这个优化程序。用shellexecute调用NASTRAN.EXE程序,调用如下ShellExecute(ME.HWND,"D:\nastran.e...
如图,我打算用VB编制这个优化程序。
用shellexecute调用NASTRAN.EXE程序,调用如下ShellExecute(ME.HWND, "D:\nastran.exe", "w.bdf", NULL,SW_SHOWNORMAL)
但后来发现一个问题,就是在NASTRAN.EXE没有执行完成的时候所编制的程序已经向下走了。导致对同未被修改的W.bdf 同时重复多次被调用。
有什么办法让 nastran.exe 执行完成后才运行ShellExecute的下一个语句。 展开
用shellexecute调用NASTRAN.EXE程序,调用如下ShellExecute(ME.HWND, "D:\nastran.exe", "w.bdf", NULL,SW_SHOWNORMAL)
但后来发现一个问题,就是在NASTRAN.EXE没有执行完成的时候所编制的程序已经向下走了。导致对同未被修改的W.bdf 同时重复多次被调用。
有什么办法让 nastran.exe 执行完成后才运行ShellExecute的下一个语句。 展开
5个回答
展开全部
可以使用while循环查看是否结束
Private Function MyShell(ByVal cmd As String, Optional AppStyle As VbAppWinStyle = vbNormalFocus)
Dim RetVal As Long
RetVal = Shell(cmd, AppStyle)
Do While IsRunning(RetVal)
DoEvents
Loop
'执行完毕
End Function
调用!!!
MyShell "c:\1.exe", vbHide
Private Function MyShell(ByVal cmd As String, Optional AppStyle As VbAppWinStyle = vbNormalFocus)
Dim RetVal As Long
RetVal = Shell(cmd, AppStyle)
Do While IsRunning(RetVal)
DoEvents
Loop
'执行完毕
End Function
调用!!!
MyShell "c:\1.exe", vbHide
展开全部
兄弟,你的nastran是完成后是否会自动结束自己的?如是的话就用判断进程法。
如不是,就用判断文件法,即判断w.bdf是否已经被改动。
然后设一个超时判断就ok啦。
如不是,就用判断文件法,即判断w.bdf是否已经被改动。
然后设一个超时判断就ok啦。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你不是运行结束有文本文件输出吗?调用外部文件后,一直就检测文本文件有没有生成,有的话再下一步,没有的话延时再判断,一直到有文件生成!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以使用子进程的方式。《windows核心编程》中4.4节就提到了这个方法,你可以参考一下。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
判断进程是否存在,存在的话结束进程就可以了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询