Stavi ovaj kod u modul
Code:
Option Explicit
Public Type POINTAPI
X As Long
Y As Long
End Type
Public Type msg
hWnd As Long
Message As Long
wParam As Long
lParam As Long
time As Long
Pt As POINTAPI
End Type
Private Const QS_HOTKEY = &H80
Private Const QS_MOUSEBUTTON = &H4
Private Const QS_MOUSEMOVE = &H2
Private Const QS_KEY = &H1
Private Const QS_PAINT = &H20
Private Const QS_POSTMESSAGE = &H8
Private Const QS_SENDMESSAGE = &H40
Private Const QS_TIMER = &H10
Private Const QS_MOUSE = (QS_MOUSEMOVE Or QS_MOUSEBUTTON)
Private Const QS_INPUT = (QS_MOUSE Or QS_KEY)
Private Const QS_ALLEVENTS = (QS_INPUT Or QS_POSTMESSAGE Or QS_TIMER Or QS_PAINT Or QS_HOTKEY)
Private Const QS_ALLINPUT = (QS_SENDMESSAGE Or QS_PAINT Or QS_TIMER Or QS_POSTMESSAGE Or QS_MOUSEBUTTON Or QS_MOUSEMOVE Or QS_HOTKEY Or QS_KEY)
Private Const WAIT_OBJECT_0 = 0
Private Const WAIT_TIMEOUT = &H102
Private Const WAIT_ABANDONED_0 = &H80
Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long
Private Declare Function GetTickCount Lib "kernel32" () As Long
Private Declare Function GetCurrentProcessId Lib "kernel32" () As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Declare Function CreateEvent Lib "kernel32" Alias "CreateEventA" (ByVal lpEventAttributes As Long, 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 MsgWaitForMultipleObjects Lib "user32" (ByVal nCount As Long, pHandles As Long, ByVal fWaitAll As Long, ByVal dwMilliseconds As Long, ByVal dwWakeMask As Long) As Long
Private Declare Function PeekMessage Lib "user32" Alias "PeekMessageA" (lpMsg As msg, ByVal hWnd As Long, ByVal wMsgFilterMin As Long, ByVal wMsgFilterMax As Long, ByVal wRemoveMsg As Long) As Long
Private Declare Function TranslateMessage Lib "user32" (lpMsg As msg) As Long
Private Declare Function DispatchMessage Lib "user32" Alias "DispatchMessageA" (lpMsg As msg) As Long
Public Function ProcessMessages() As Long
Dim M As msg
Dim NumMsg As Long
NumMsg = PeekMessage(M, 0, 0, 0, 1)
If NumMsg Then
Call TranslateMessage(M)
Call DispatchMessage(M)
End If
ProcessMessages = NumMsg
End Function
Public Function Wait(Milliseconds As Long) As Boolean
Dim Evt As Long
Dim res As Long
Dim Start As Long
Evt = CreateEvent(0, 1, 0, vbNullString)
Call ResetEvent(Evt)
Start = GetTickCount
Do
res = MsgWaitForMultipleObjects(1, Evt, False, Milliseconds, QS_ALLINPUT)
ProcessMessages
If res = WAIT_TIMEOUT Then
res = 0 ' EXIT FUNCTION, RETURN FALSE!!!!
ElseIf res = 0 Then
Wait = True
Else
If GetTickCount - Start >= Milliseconds Then res = 0
End If
Loop While res > 0
Call ResetEvent(Evt)
Call CloseHandle(Evt)
End Function
i pozovi Wait sa brojem milisekundi