其他分享
首页 > 其他分享> > VB Msgbox提示窗口超时限后自动关闭

VB Msgbox提示窗口超时限后自动关闭

作者:互联网

Public Function F_Msgbox_time(para_msg As String, title1 As String) As Long
    On Error Resume Next
    Dim hwnd As Long
    Timer3.Enabled = True
    F_Msgbox_time = MsgBox(para_msg, vbOKCancel + vbApplicationModal, title1)
    Timer3.Enabled = False
End Function
//----------------------F_Msgbox_time() -------------------------
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
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_KEYDOWN = &H100
//Private Const WM_CLOSE = &H10
Private Const MsgTitle As String = "MyshutdownMsg"

//-----------------------------------------------------------------------
Private Sub Timer3_Timer()
    On Error Resume Next
    Dim hwnd As Long
    hwnd = FindWindow(vbNullString, MsgTitle)
    Call PostMessage(hwnd, WM_KEYDOWN, 13, 0&)
//  Call SendMessage(hwnd, WM_CLOSE, 0, ByVal 0&)
End Sub
Private Sub Form_Load()
        Timer1.Enabled = True
        Timer1.Interval = 60000
        Timer2.Enabled = True
        Timer2.Interval = 1000
        Timer3.Enabled = False
        Timer3.Interval = 60000
End Sub
//调用格式
                If F_Msgbox_time(" 网管监控提醒您:系统将在1分钟后关机!" & vbCrLf & vbCrLf & _
                                 " [确定] 立即关机, [取消] 忽略此操作。", MsgTitle) = 1 Then
                    Call F_Get_Shutsig(public_IP_STRING, "1")
                    Call F_Get_Shutsig(public_IP_STRING, "3")
                    Shell "shutdown -s -t 10"
                    End
                Else
                    sig0 = F_Get_Shutsig(public_IP_STRING, "2")
                End If
//应用格式

Public Sub P_OPEN_MSG(msgname As Variant)
    On Error Resume Next
    Dim para1 As String
    para1 = msgname
    Call F_Msgbox_time(para1, MsgTitle)
End Sub

标签:VB,End,Sub,ByVal,Private,Long,hwnd,超时限,Msgbox
来源: https://blog.51cto.com/12815848/2544645