In de oudere 32 bit versies van Access werkte er een VBA functie prima, via aanroepen van wat API's uit de bibliotheek, om het Access Kruisje rechtsboven uit te schakelen zodat een gebruiker de DB niet vroegtijdig kon sluiten. De functie werd aangeroepen door een "Call AccessCloseButtonEnabled(True)" en bij sluiten van de DB via de daarvoor bestemde knop werd die aanroeping dan "Call AccessCloseButtonEnabled(False)". Nu is mijn vraag wat dat moet worden om te kunnen werken in Access 64 bit versie? De PtrSafe toevoeging is geen oplossing aangezien we nu werken met de Windows 64 bit op 't werk.
Even de oude functie zelf hieronder:
Even de oude functie zelf hieronder:
Code:
Public Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal wRevert As Long) As Long
Public Declare Function EnableMenuItem Lib "user32" (ByVal hMenu As Long, ByVal wIDEnableItem As Long, ByVal wEnable As Long) As Long
Public Sub AccessCloseButtonEnabled(pfEnabled As Boolean)
' Comments: Control the Access close button.
' Disabling it forces the user to exit within the application
' Params : pfEnabled TRUE enables the close button, FALSE disabled it
On Error Resume Next
Const clngMF_ByCommand As Long = &H0&
Const clngMF_Grayed As Long = &H1&
Const clngSC_Close As Long = &HF060&
Dim lngWindow As Long
Dim lngMenu As Long
Dim lngFlags As Long
lngWindow = Application.hWndAccessApp
lngMenu = GetSystemMenu(lngWindow, 0)
If pfEnabled Then
lngFlags = clngMF_ByCommand And Not clngMF_Grayed
Else
lngFlags = clngMF_ByCommand Or clngMF_Grayed
End If
Call EnableMenuItem(lngMenu, clngSC_Close, lngFlags)
End Sub