Tự động đóng 1 messageBox

TungDauTen

Yêu THVBA
Anh chị cho e hỏi làm thế nào để tự động đóng 1 messageBox,msgbox sau 1 khoảng thời gian ạ?
Em cảm ơn!
 

tuhocvba

Administrator
Thành viên BQT
Trong VB.NET bạn tham khảo
Mã:
Public Class Form1
    <System.Runtime.InteropServices.DllImport("user32.dll")> _
    Private Shared Function keybd_event(ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As UInteger, ByVal dwExtraInfo As Integer) As Boolean
    End Function

    Private Const VK_ESCAPE As Byte = &H1B
    Private Const KEYEVENTF_KEYDOWN As Byte = &H0
    Private Const KEYEVENTF_KEYUP As Byte = &H2

    Private r As DialogResult = DialogResult.None 'メッセージボックスが表示中かどうか判定するために使う変数

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        r = DialogResult.None

        Dim t As New Threading.Thread(AddressOf closeMsgbox)
        t.Start(5) 'Tu dong close sau 5 giay

        r = MessageBox.Show("Auto-close message")
    End Sub

    Private Sub closeMsgbox(ByVal delay As Object)
        Threading.Thread.Sleep(CInt(delay) * 1000)

        If r = DialogResult.None Then
            AppActivate(System.Diagnostics.Process.GetCurrentProcess().Id) 'Activating itself activates the message box
            keybd_event(VK_ESCAPE, 0, KEYEVENTF_KEYDOWN, 0)
            keybd_event(VK_ESCAPE, 0, KEYEVENTF_KEYUP, 0)
        Else
            r = DialogResult.None
        End If
    End Sub
End Class
Nguồn tham khảo
 

lyly

Nghiện THVBA
VBA code
Mã:
Sub Autoclose_MessageBox()
   Dim msgBoxText As String
   Dim timeDelay As Double
   Dim msgBox As Object
    
   msgBoxText = "Auto close after 5 second "
    
   timeDelay = 5
    
   Set msgBox = CreateObject("WScript.Shell")
   msgBox.Popup msgBoxText, timeDelay, "Message Box Timer", vbInformation
End Sub
 

lyly

Nghiện THVBA
vbnet
Mã:
 CreateObject("WScript.Shell").Popup("Loại file không được hỗ trợ !", 1, "Thông báo", 64)
 

eagle12

Yêu THVBA
VBA code
Mã:
Sub Autoclose_MessageBox()
   Dim msgBoxText As String
   Dim timeDelay As Double
   Dim msgBox As Object
   
   msgBoxText = "Auto close after 5 second "
   
   timeDelay = 5
   
   Set msgBox = CreateObject("WScript.Shell")
   msgBox.Popup msgBoxText, timeDelay, "Message Box Timer", vbInformation
End Sub
Em thử code này, vẫn phải bấm OK thì msgBox nó mới mất đi bác à

Em có phải chỉnh sửa gì thêm nữa không bác

Bạn cần đăng nhập để thấy hình ảnh
 

eagle12

Yêu THVBA
@eagle12 bạn đã đợi đủ 5 giây chưa ?
Dear bác LyLy

Mình thử lại OK rồi bạn ah, do khi pop-up hiện lên minh thử rê chuột vào bảng tính nên macro chưa nhận, pop-up vẫn cứ chờ
Phải để đợi 5s sẽ tắt

Cám ơn bạn nhiều nha
 
Top