外部的程序正常退出时弹出系统对话框确认窗口YES/NO,这样用SendMessage(winHwnd, WM_CLOSE, 0, 0)关闭程序就会直接出现对话框,而程序此时就处于等待状态,只有手动确认对话框后程序才继续往下执行,有没有办法解决这个问题?代码如下
Api函数声明略
Private Sub Command1_Click()
Dim winHwnd As Long
winHwnd = FindWindow("TFrmMain", vbNullString)   '用类名取得窗口句柄
If winHwnd <> 0 Then
    Call SendMessage(winHwnd, WM_CLOSE, 0, 0)
End If
End Sub

解决方案 »

  1.   

    PostMessage试过了一样的,是不是必须SendMessage完全执行完才能继续执行?
      

  2.   

    如果你想直接关闭可以发送WM_DESTROY消息绕过确认提示。
    否则要考虑再获得提示窗口的句柄,向它的BUTTON发送鼠标或按键(回车、空格均可吧)。
      

  3.   

    这里改成Call SendMessage(winHwnd, WM_DESTROY, 0, 0)吗?
    试了,连对话框也不出来了,没作用
      

  4.   

    解决了,谢谢tztz520(午夜逛街),我开始没弄清楚postMessage与SendMessage的区别,他们的传送机制不同,结贴了