Год назад или около того у меня была похожая проблема, которую я смог решить с помощью API
.
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
И
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hwnd As Long, ByVal Msg As Integer, ByVal wParam As Long, ByVal lParam As Long) As Long
Используя API FindWindow, я реализовал своего рода процедуру наблюдения
Do Until FindWindow(vbNullString, "Internet Explorer") > 0
Sleep 100
DoEvents
Loop
Как только оно нашло окно, я должен был подтвердить выбор по умолчанию (в моем случае это было "Открыть"), пока окно не исчезло
Do Until FindWindow(vbNullString, "Internet Explorer") = 0
SendMessage FindWindow(vbNullString, "Internet Explorer"), WM_COMMAND, IDOK, 0
Sleep 100
DoEvents
Loop
SendMessage великолепен, потому что он отправляет команду непосредственно целевому hWnd по сравнению с SendKeys, который просто отправляет указанное нажатие клавиши тому, что находится в фокусе.