加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

vb 利用shell调用程序时如何等待其结束后再继续往下执行

(2016-12-19 11:03:36)
标签:

vb

多线程

同步线程

shell确认结束

分类: VB
我们经常会碰到这种情况,在利用shell调用一个外部程序后,需要等待其执行结束后,方可继续执行接下来的代码。这种情况下应该如何实现呢?

Private Const SYNCHRONIZE = &H100000
Private Const INFINITE = &HFFFFFFFF
 
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
 
Dim lngPId As Long
Dim lngPHandle As Long
 
lngPId = Shell("tmp.bat", vbHide) ''调用程序,并取得进程标识符
lngPHandle = OpenProcess(SYNCHRONIZE, 0, lngPId)'返回值为指定进程的打开句柄。
If lngPHandle <> 0 Then
    Call WaitForSingleObject(lngPHandle, INFINITE) '无限等待,直到运行结束
    Call CloseHandle(lngPHandle) '关闭进程
    '''接下来的代码
End If

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有