Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > Автоматическое закрытие MsgBox'a


Автор: cardinal 27.5.2005, 18:47
Код

' в модуль запишем следующее
Private Declare Function KillTimer Lib "user32" _
   (ByVal hWnd As Long, ByVal nIDEvent As Long) As Long
Private Declare Function FindWindow Lib "user32" Alias _
   "FindWindowA" (ByVal lpClassName As String, _
   ByVal lpWindowName As String) As Long
Private Declare Function SetForegroundWindow Lib "user32" _
   (ByVal hWnd As Long) As Long

Public Const NV_CLOSEMSGBOX As Long = &H5000&

Public Sub TimerProc(ByVal hWnd As Long, ByVal uMsg As Long, _
   ByVal idEvent As Long, ByVal dwTime As Long)

   KillTimer hWnd, idEvent
   Select Case idEvent
      Case NV_CLOSEMSGBOX 'хотим закрыть окно после 4 секунд
         Dim hMessageBox As Long
        'чтобы MsgBox мог закрыться нормально надо определить по кокому имени будет закрываться
         hMessageBox = FindWindow("#32770", "MsgBox")
         If hMessageBox Then
            Call SetForegroundWindow(hMessageBox)
            SendKeys "{enter}"
        End If
    End Select

End Sub

Код

' на форму напишите следующее
Private Declare Function SetTimer Lib "user32" _
   (ByVal hWnd As Long, ByVal nIDEvent As Long, _
   ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long

Private Sub cmdShowMsg_Click()

    'здесь нам настраиваится час 4 секунды (4000 милисекунд)
    SetTimer hWnd, NV_CLOSEMSGBOX, 4000, AddressOf TimerProc
   
    If MsgBox("Сообщение автоматически закроеться после 4 секунд. _
      Повторить или конец ?", vbRetryCancel + vbDefaultButton1, _
      "MsgBox") = vbRetry Then
         MsgBox "Повторить"
    Else
         MsgBox "Конец"
    End If
 
End Sub

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)