I am using consecutive loops to search for a a sequence of windows and automate clicking command buttons but sometimes some random windows pop up in between the normal windows and my program gets stuck in a loop until it finds the window it's looking for.
This is my code, is there a better way of doing this?
This is my code, is there a better way of doing this?
Code:
Private Sub cmdYes_Click()
Dim hWndPriceWindow As Long
Dim hWndPriceBtn As Long
Dim hWndOkayBtn As Long
Dim hWndDispenseWindow As Long
Dim hWndDispenseBtn As Long
'Find first popup window
Do
DoEvents
If frmSettings.chkWildcard.Value = 0 Then
hWndPriceWindow = FindWindow(vbNullString, frmSettings.txtS3.Text)
Else
hWndPriceWindow = FindWindowWild(frmSettings.txtS3.Text)
End If
Loop Until hWndPriceWindow <> 0
Do
DoEvents
hWndPriceBtn = FindWindowEx(hWndPriceWindow, 0&, "Button", "&Yes")
Loop Until hWndPriceBtn <> 0
Do
DoEvents
PostMessage hWndPriceBtn, BM_CLICK, 0, ByVal 0&
Loop Until IsWindow(hWndPriceWindow) = 0
Do
DoEvents
hWndOkayBtn = FindWindowEx(hWndParent, 0&, "Button", "Okay")
Loop Until hWndOkayBtn <> 0
PostMessage hWndOkayBtn, BM_CLICK, 0, ByVal 0&
' Find second popup window
Do
DoEvents
hWndDispenseWindow = FindWindow(vbNullString, "Dispense")
Loop Until hWndDispenseWindow <> 0
Do
DoEvents
hWndDispenseBtn = FindWindowEx(hWndDispenseWindow, 0&, "Button", "&Yes")
Loop Until hWndDispenseBtn <> 0
Do
DoEvents
PostMessage hWndDispenseBtn, BM_CLICK, 0, ByVal 0&
Loop Until IsWindow(hWndDispenseWindow) = 0
End Sub