免費論壇 繁體 | 簡體
Sclub交友聊天~加入聊天室當版主
分享
返回列表 回復 發帖

VB6 Msgbox 自動關閉

使用 FindWindows 找出 MsgBox,透過 PostMessage 發送 Close 訊息讓 MsgBox 關閉,參考以下程式碼




Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, _
lParam As Any) As Long

Private Const WM_CLOSE = &H10
Private Const MsgTitle As String = "Test Message"
'在表單中加入一個 CommandButton 及一個 Timer 控制項,加入以下程式碼:

Private Sub Command1_Click()
Dim nRet As Long
Timer1.Interval = 3000
Timer1.Enabled = True
nRet = MsgBox("若您不回應的話,3 秒後此 MsgBox 會自動關閉", 64, MsgTitle)
Timer1.Enabled = False
End Sub

Private Sub Timer1_Timer()
Dim hWnd As Long
hWnd = FindWindow(vbNullString, MsgTitle)
Call SendMessage(hWnd, WM_CLOSE, 0, ByVal 0&)
End Sub

--------------------------------------------------------------------------------------



Public Class Form1
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Integer
Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer

Private Sub btnOpen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOpen.Click
    Me.Timer1.Enabled = True
    Me.Timer1.Interval = 1000
    MsgBox("測試", MsgBoxStyle.OkOnly, "MsgBox")
    Me.Timer1.Enabled = False
End Sub
   
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    Dim hWnd As Integer
    hWnd = FindWindow(vbNullString, "MsgBox")
    If hWnd Then
        PostMessage(hWnd, &H10, 0&, 0&)
    End If
End Sub

End Class
返回列表