2015-07-24 3 views
1

Я использую SendMessage() для отправки BM_CLICK кнопке, которая открывает всплывающее окно, а затем пытается использовать FindWindow(), чтобы найти идентификатор этого окна. Когда я вручную нажимаю кнопку или нажимаю кнопку ввода после выбора кнопки, я могу найти идентификатор окна в порядке, но когда я отправляю кнопку BM_CLICK сообщение, я не могу найти это окно. Я установил таймер в случае, если я искал окно слишком рано, но не повезло. Есть ли разница между фактическим кликом и использованием BM_CLICK, что может вызвать эту проблему? Вот мой код:FIndWindow() не работает после BM_CLICK

Call SendMessage(hist_ID, BM_CLICK, 0, 0) 
Sleep 500 

hist_window_id = FindWindow("ThunderRT6FormDC", "Select History Data") 

timeout = 0 
Do While hist_window_id = 0 
    If timeout < 20 Then 
     Sleep 50 
     hist_window_id = FindWindow("ThunderRT6FormDC", "Select History Data") 
     timeout = timeout + 1 
    Else 
     MsgBox "System Timeout" 
     Exit Function 
    End If 
Loop 
+0

Да, я получаю его только при использовании BM_CLICK – Matt26

+0

PostMessage() работал! Спасибо за помощь!! – Matt26

ответ

0

SendMessage() ожидает сообщения должны быть обработаны, прежде чем продолжить. Если обработчик события нажатия кнопки отображает модальное окно, он может блокировать вашу программу VB до тех пор, пока окно не будет уволено. Вместо этого используйте PostMessage().