Board logo

標題: [分享] 讓程式等待至上一個開啟的執行程式結束 [打印本頁]

作者: Min    時間: 2010-5-3 20:34     標題: 讓程式等待至上一個開啟的執行程式結束

本帖最後由 Min 於 2010-5-3 23:03 編輯

Option Explicit

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
Public Const SYNCHRONIZE = &H100000
Public Const INFINITE = &HFFFFFFFF

Sub WaitProcess()
    Dim Pid As String
    Dim pHnd As String
   
    Pid = Shell("C:\Windows\system32\notepad.exe", vbNormalFocus)   ' Shell 傳回 Process Id
    pHnd = OpenProcess(SYNCHRONIZE, 0, Pid) ' 取得 Process Handle
    If pHnd <> 0 Then
        Call WaitForSingleObject(pHnd, INFINITE) ' 無限等待,直到程式結束
        DoEvents '暫停執行,以便讓作業系統可以處理其它的事件。
        Call CloseHandle(pHnd)
    End If
End Sub




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)