【问题标题】:FIndWindow() not working after BM_CLICKBM_CLICK 后 FIndWindow() 不工作
【发布时间】:2015-07-24 14:43:30
【问题描述】:

我正在使用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

【问题讨论】:

  • 是的,我只有在使用 BM_CLICK 时才能得到它
  • PostMessage() 有效!感谢您的帮助!

标签: button vb6 controls windows-api-code-pack


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2018-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-28
    • 1970-01-01
    相关资源
    最近更新 更多