vb6.0 CreateEvent

VB WaitForSingleObject不假死等待进程怎么做
Call WaitForSingleObject(lngPHandle, INFINITE)
谢谢,我已经问穷了,没积分了 !
我的目的就是多线程!一个运行完等进程结束后自动调用下个程序,,先谢谢你的回答!

TEvent类:

Option Explicit

Const INFINITE = &HFFFF

Const ERROR_ALREADY_EXISTS = 183&

Const WAIT_TIMEOUT = &H102

Private Declare Function CreateEvent Lib "kernel32" Alias "CreateEventA" (lpEventAttributes As Any, ByVal bManualReset As Long, ByVal bInitialState As Long, ByVal lpName As String) As Long

Private Declare Function SetEvent Lib "kernel32" (ByVal hEvent As Long) As Long

Private Declare Function ResetEvent Lib "kernel32" (ByVal hEvent As Long) As Long

Private Declare Function PulseEvent Lib "kernel32" (ByVal hEvent 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

Private hEvent As Long

Private m_TimeOut As Long

Public Function Create(ByVal EventName As String) As Long

If EventName = "" Then

Create = -1

Exit Function

End If

If hEvent <> 0 Then

Create = 0

Exit Function

End If

Dim i As Long

hEvent = CreateEvent(ByVal 0, 1, 0, EventName)

If i = 0 Then

Create = 1

End If

End Function

Public Sub DelEvent()

Call CloseHandle(hEvent)

hEvent = 0

End Sub

Public Sub Signal()

Call SetEvent(hEvent)

End Sub

Public Sub PulseSignal()

Call PulseEvent(hEvent)

End Sub

Public Sub UnSignal()

Call ResetEvent(hEvent)

End Sub

Public Function ChkSignaled()

If hEvent = 0 Then

ChkSignaled = -1

Exit Function

End If

Dim i As Long

i = WaitForSingleObject(hEvent, m_TimeOut)

If i = 0 Then

ChkSignaled = 1

Else

If i = WAIT_TIMEOUT Then

ChkSignaled = 0

Else

ChkSignaled = -1

End If

End If

End Function

Public Property Get TimeOut() As Long

TimeOut = m_TimeOut

End Property

Public Property Let TimeOut(ByVal vNewValue As Long)

If vNewValue < 0 Then

vNewValue = 0

End If

m_TimeOut = vNewValue

End Property

Private Sub Class_Initialize()

m_TimeOut = INFINITE

End Sub

Private Sub Class_Terminate()

Call DelEvent

End Sub

//*********************************************

以下在Form 需3个Command Button 一个label

//**********************************************

Option Explicit

Dim aa As New TEvent

Private Sub Command1_Click()

aa.Signal

End Sub

Private Sub Command2_Click()

aa.UnSignal

End Sub

Private Sub Command3_Click()

Dim i As Long

aa.TimeOut = 5000

i = aa.ChkSignaled

Label1.Caption = "等待中"

DoEvents

If i = 1 Then

Label1.Caption = "绿灯了"

Else: Label1.Caption = "Time Out了"

End If

End Sub

Private Sub Form_Load()

aa.Create ("MyEvent")

End Sub