If this is your first visit, be sure to check out the FAQ by clicking the link above. You may have to register before you can post: click the register link above to proceed. To start viewing messages, select the forum that you want to visit from the selection below. |
|
|
Thread Tools | Display Modes |
#1
|
|||
|
|||
I need to use this code to close my db if a form is still open, where does it go
For anyone interested I found the answer I was looking for
When I start my program I "Hook" the Access Application Handle 'Hook the Access application so we can determine if it is shutting down Hook Application.hWndAccessApp Then When someone clicks the X or does ALT-F4 the function below WindowsProc intercepts the WM_CLOSE message sent to the application window and blah blah blah I get the desired result. Option Explicit '************************************************* *********** 'API '************************************************* *********** Private Declare Function CallWindowProc Lib "user32.dll" Alias "CallWindowProcA" ( _ ByVal lpPrevWndFunc As Long, _ ByVal hWnd As Long, _ ByVal Msg As Long, _ ByVal wParam As Long, _ ByVal lParam As Long) As Long Private Declare Function SetWindowLong Lib "user32.dll" Alias "SetWindowLongA" ( _ ByVal hWnd As Long, _ ByVal nIndex As Long, _ ByVal dwNewLong As Long) As Long '************************************************* *********** 'Constants '************************************************* *********** Private Const GWL_WNDPROC = -4 Private Const WM_DESTROY = &H2 Private Const WM_CLOSE = &H10 '************************************************* *********** 'Variables '************************************************* *********** Private hControl As Long Private lPrevWndProc As Long '************************************************* ************ 'WindowProc '************************************************* ************ Private Function WindowProc(ByVal lWnd As Long, ByVal lMsg As Long, _ ByVal wParam As Long, ByVal lParam As Long) As Long 'Selects which messages you want to detect Select Case lMsg Case WM_CLOSE 'Send the message we found WindowProc = CallWindowProc(lPrevWndProc, lWnd, lMsg, wParam, lParam) 'Unhook we don't want any more messages about this application. Got the one we were 'looking for Unhook 'Set the exiting application flag which allows frmLookup to close bExitingApp = True 'Close frmLookup if it is loaded If IsLoaded("frmLookup") Then DoCmd.Close acForm, "frmLookup" End If 'Quit Access Application.Quit Exit Function End Select 'Sends message to previous procedure 'This is VERY IMPORTANT!!! WindowProc = CallWindowProc(lPrevWndProc, lWnd, lMsg, wParam, lParam) End Function I found this code here, and it looks like it will do what I need it to do - Close DB and if a form is open close it first. But I can't work out were to put it or how to activate it. any help will appriciated. TrevorC. '************************************************* ************ 'Hook '************************************************* ************ Public Sub Hook(ByVal hControl_ As Long) hControl = hControl_ lPrevWndProc = SetWindowLong(hControl, GWL_WNDPROC, AddressOf WindowProc) End Sub '************************************************* ************ 'Unhook '************************************************* ************ Public Sub Unhook() Call SetWindowLong(hControl, GWL_WNDPROC, lPrevWndProc) End Sub -- Message posted via AccessMonster.com http://www.accessmonster.com/Uwe/For...esign/200905/1 |
Thread Tools | |
Display Modes | |
|
|