VB 如何等待一个程序结束?

在VB中shell调用一个批处理,如何才能等待它结束才继续执行?即:如何判断它结束?(在运行的还有其他的cmd)VBhide方式运行的,没焦点啊... 在VB中shell调用一个批处理,如何才能等待它结束才继续执行?
即:如何判断它结束?(在运行的还有其他的cmd)
VBhide方式运行的,没焦点啊
展开
 我来答
能量标杆金百万cq
推荐于2016-10-08 · TA获得超过277个赞
知道小有建树答主
回答量:286
采纳率:0%
帮助的人:209万
展开全部
当你需要等待由Shell启动的应用程序运行完毕时, 便会发现Shell语句只管调用,之后就撒手不管了,于 是我们不得不动用一下API函数了。当然我们可以用 API来完成全部的工作,但是如果那样的话,我们将要 面临CreateProcess这个非常复杂的函数,光写下它 和相关结构类型的宣告就超出一页纸了。别误会,我说这些的目的只是为了让大家体会到下面我们将要做 的是多么简单的事。
只需按以下步骤step by step,便OK了。
1.新建一个项目,在窗体上放一个command1,再 添加一个Module。
2. 在Module中写入如下代码:
Option Explicit
以下声明了OpenProcess,GetExitCodeProcess 和Closeandle 三个API函数
Public Declare Function OpenProcess Lib"ker nel32"(ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long)As Long
Public Declare Function GetExitcodeProcess Lib “kernel32”(ByVal hProcess As Long, 1pExitcode As Long) As Long
Public Declare Function Closellandle Lib "Ker nel32”(ByVal hobject As Long) As Long
Publi Const PROCESS_QUERY_INFORMATION= &H400
Public Const STATUS_PENDING = &H103&
3.打开窗体的代码窗口,写入如下代码:
Option Explicit
Private Sub RunShell(cmdline As String) 这个自定义过程完成了所有工作
Dim hProcess As Long
Dim ProcessId As Long
Dim exitCode As Long
ProcessId = Shell(cmdline,1)'此处利用了 Shell当函数使用时返回的任务标识
hProcess=OpenProcess(PROCESS_QUERY_INFOR MATION,False,ProcessId)
Do
Ca11 GetExitCodeProcess(hProcess,exitcode)
DoEvents
Loop While exitCode = STATUS_PENDING
Call CloseHandle(hProcess)
MsgBox cmdline & "已经关闭。"
End Sub
Private Sub Command1_Click()
RunShell ”notepad.exe”
End Sub
4.按F5运行,单击Command1运行计事本,关闭 计事本将弹出对话框“notepad.exe 已经关闭。”
注意:由于本程序是用一个Do..Loop循环来侦测 进程的结束,所以那句DoEvents是绝不能少的,不然 你就只能用Ctrl+Break来退出了。
令狐肿
2010-05-03 · TA获得超过227个赞
知道小有建树答主
回答量:295
采纳率:100%
帮助的人:167万
展开全部
没那么麻烦。AppActivate Shell(要启动程序,要启动的程序的窗体状态),True
就这一句语句,如果要启动的程序不退出,你的程序就不继续。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式