[VB.NET]透過程式關閉 MsgBox

  • 13044
  • 0
  • 2011-04-23

[VB.NET]透過程式關閉 MsgBox

 

一、問題描述

用 MsgBox 彈出一個訊息對話框後,該如何透過程式自動關閉?

 

二、方法

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


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

 

三、範例下載

WinFormCloseMsgBox.zip