精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>● VB和Basic>>〓〓..API 函数使用..〓〓>>系统操作和其他>>如何等待Shell产生的任务终止?

主题:如何等待Shell产生的任务终止?
发信人: yahao(亚豪)
整理人: winsy(2003-03-05 15:53:24), 站内信件
【 在 desert 的大作中提到:】
:在VB中用Shell执行一bat文件
:是否可以等待其执行完成?
:该如何做?
:如果不行,怎样可以实现?
:谢谢!
:......
 
 可以。
 这里用到了三个API函数,代码如下:

在 Module1.bas 中声明函数和进行常量定义:
-------------------------------------------
Public Const SYNCHRONIZE = &H100000
Public Const INFINITE = &HFFFFFFFF

Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long

在 Form1 表单的一个过程中:
-------------------------------------------
Dim pId As Long, pHnd As Long
...
pId = Shell("c:\my.bat",vbHide)
pHnd = OpenProcess(SYNCHRONIZE, 0, pId) ' 取得 Process Handle
If pHnd <> 0 Then
   Call WaitForSingleObject(pHnd, INFINITE) ' 等待程序结束
   Call CloseHandle(pHnd) '关闭进程/程序
End If
...



----
█████████
█┌─────┐█
█│ 广州社区 │█
█│  ASP 版  │█
█│  版★副  │█
█│  专用章  │█
█└─────┘█
█████████

   欢迎光临ASP版

[关闭][返回]