Option Compare Database
Option Explicit
'// Basiert auf einem Beispiel von:
'// Bryan Stafford (http://www.mvps.org/vbvision)
Public Declare Function WinMessageBox _
Lib "user32.dll" Alias "MessageBoxA" ( _
ByVal hwnd As Long, _
ByVal lpText As String, _
ByVal lpCaption As String, _
ByVal wType As Long) As Long
Private Declare Function WinPostMessage _
Lib "user32.dll" Alias "PostMessageA" ( _
ByVal hwnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
ByVal lParam As Long) As Long
Private Declare Function WinFindWindow _
Lib "user32.dll" Alias "FindWindowA" ( _
ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
Public Declare Function WinSetTimer _
Lib "user32.dll" Alias "SetTimer" ( _
ByVal hwnd As Long, _
ByVal nIDEvent As Long, _
ByVal uElapse As Long, _
ByVal lpTimerFunc As Long) As Long
Public Declare Function WinKillTimer _
Lib "user32.dll" Alias "KillTimer" ( _
ByVal hwnd As Long, _
ByVal nIDEvent As Long) As Long
Public Const NV_CLOSEMSGBOX As Long = &H5000&
Private Const WM_CLOSE As Long = &H10&
Public MsgBox2_Title As String
Public Sub TimerProc( _
ByVal hwnd As Long, _
ByVal uMsg As Long, _
ByVal idEvent As Long, _
ByVal dwTime As Long)
'// Callback-Funktion
'// Windows ruft diese Funktion auf, wenn ein Timer-Ereignis eingetreten ist,
'// die Festlegung, dass es diese Prozedur sein soll, wurde beim Setzen des
'// Timers festgelegt
'// Als Erstes wird der Timer wieder entfernt
Call WinKillTimer(hwnd, idEvent)
'// Jetzt die Manipulation
Select Case idEvent
Case NV_CLOSEMSGBOX '// Schliessen der MsgBox nach einer vorher
'// bestimmten Zeit
Dim hMessageBox As Long
'// MsgBox finden
hMessageBox = WinFindWindow("#32770", MsgBox2_Title)
'// Die Nachricht WM_CLOSE as das Fenster senden
If hMessageBox Then
Call WinPostMessage(hMessageBox, WM_CLOSE, ByVal 0&, ByVal 0&)
End If
End Select
End Sub
Option Compare Database
Option Explicit
Private Sub cmdClose_Click()
DoCmd.Close acForm, Me.Name
End Sub
Private Sub cmdShowMsgBox_Click()
'Aufruf der Funktion
MsgBox2 "Hallo Welt1", 1, "titel"
MsgBox2 "Hallo Welt2", 1, "Mein Titel", 1
MsgBox2 "Hallo Welt3!", 1, "Mein Titel", 1, 2 'Probleme, siehe unten Case 234, bricht nicht ab
MsgBox2 "Hallo Welt4", 1, "Mein Titel", 1, 5
End Sub
Public Sub MsgBox2(strMessage As String, intTime As Integer, Optional strTitle As String = "InformationBox", _
Optional intIcon As Integer = 3, Optional intButton As Integer = 0)
On Error GoTo Err_MsgBox2
Dim varIconType As Variant
Dim varButtonType As Variant
'------------------------
'Constants for API-MsgBox
'------------------------
MsgBox2_Title = strTitle
Select Case (intIcon)
Case 0: varIconType = &H10&
Case 1: varIconType = &H20&
Case 2: varIconType = &H30&
Case 3: varIconType = &H40&
Case vbCritical: varIconType = &H10&
Case vbQuestion: varIconType = &H20&
Case vbExclamation: varIconType = &H30&
Case vbInformation: varIconType = &H40&
Case Else: varIconType = &H10&
End Select
Select Case (intButton)
Case 0: varButtonType = &H0&
Case 1: varButtonType = &H1&
'Case 2: varButtonType = &H2& 'Unknown Problems
'Case 3: varButtonType = &H3& 'Unknown Problems
'Case 4: varButtonType = &H4& 'Unknown Problems
Case 5: varButtonType = &H5&
Case Else: varButtonType = &H0&
End Select
'Const MB_ICONSTOPP = &H10&
'Const MB_ICONQUESTION = &H20&
'Const MB_ICONEXCLAMATION = &H30&
'Const MB_ICONASTERISK = &H40&
'Const MB_OK = &H0&
'Const MB_OKCANCEL = &H1&
'Const MB_ABORTRETRYIGNORE = &H2&
'Const MB_YESNOCANCEL = &H3&
'Const MB_YESNO = &H4&
'Const MB_RETRYCANCEL = &H5&
'// Timer set - Callback in the Procedure TimerProc
' hier ist das Problem mit dem Me.hwnd, da dies eine ID des Formualrs zurückgibt
' könnte dies nicht auch ohne das klappen?
Call WinSetTimer(Me.hwnd, NV_CLOSEMSGBOX, intTime * 1000, AddressOf TimerProc)
'// Call API-MsgBox
Call WinMessageBox(Me.hwnd, strMessage, MsgBox2_Title, varIconType Or varButtonType)
Exit_MsgBox2:
Exit Sub
Err_MsgBox2:
MsgBox Err.Description
Resume Exit_MsgBox2
End Sub
'Function bases on MsgBox2 Sub
Public Function MsgBoxf2(strMessage As String, intTime As Integer, Optional strTitle As String = "InformationBox", _
Optional intIcon As Integer = 3, Optional intButton As Integer = 0)
Call MsgBox2(strMessage, intTime, strTitle, intIcon, intButton)
End Function
'MsgBox2 "Hallo Welt!",3,"Mein Titel",1,1
MsgBox beim starten der Accessdatei
Robsenponte 19.01.2007 - 60 Hits - 2 Antworten
msgbox button
nighty 03.03.2007 - 103 Hits - 1 Antwort
Visual Basic Code: MsgBox mit Ereignis
breznica 17.12.2007 - 75 Hits - 2 Antworten
Datum/Zeit in MsgBox ausgeben lassen
stefanH. 22.02.2008 - 64 Hits - 1 Antwort
Rückgabewert MsgBox
MarcoDelMestre 26.02.2008 - 43 Hits - 2 Antworten