2

我正在使用SendMessage()向打开弹出窗口的按钮发送BM_CLICK一个按钮,然后尝试使用它FindWindow()来查找此窗口的 ID。当我手动单击按钮或在选择按钮后按 Enter 时,我可以找到窗口 ID,但是当我向按钮发送BM_CLICK消息时,我无法找到窗口。我已经设置了一个计时器,以防我太早寻找窗口但没有运气。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
4

1 回答 1

1

SendMessage()在继续之前等待消息被处理。如果按钮单击事件处理程序正在显示模式窗口,则它可能会阻塞您的 VB 程序,直到该窗口被关闭。改为使用PostMessage()

于 2015-07-24T15:16:07.437 回答