Para deshabilitar el botón de aplicación Cerrar y el comando Cerrar del menú Sistema, debes llamar a las funciones GetSystemMenu y ModifyMenu desde el API Win32. Escribe el código siguiente en la sección Declaraciones:

Option Compare Database
Option Explicit
Private Declare Function GetSystemMenu Lib “user32″ (ByVal hWnd As Long, ByVal bRevert As Long) As Long

Private Declare Function EnableMenuItem Lib “user32″ (ByVal hMenu As Long, ByVal wIDEnableItem As Long, ByVal wEnable As Long) As Long

Private Declare Function GetMenuItemInfo Lib “user32″ Alias “GetMenuItemInfoA” (ByVal hMenu As Long, ByVal un As Long, ByVal b As Long, lpMenuItemInfo As MENUITEMINFO) As Long

Private Type MENUITEMINFO
cbSize As Long
fMask As Long
fType As Long
fState As Long
wID As Long
hSubMenu As Long
hbmpChecked As Long
hbmpUnchecked As Long
dwItemData As Long
dwTypeData As String
cch As Long
End Type

Const MF_GRAYED = &H1&
Const MF_BYCOMMAND = &H0&
Const SC_CLOSE = &HF060&

Agregua los procedimientos siguientes al módulo de clase:

Public Property Get Enabled() As Boolean
Dim hWnd As Long
Dim hMenu As Long
Dim result As Long
Dim MI As MENUITEMINFO
MI.cbSize = Len(MI)
MI.dwTypeData = String(80, 0)
MI.cch = Len(MI.dwTypeData)
MI.fMask = MF_GRAYED
MI.wID = SC_CLOSE
hWnd = Application.hWndAccessApp
hMenu = GetSystemMenu(hWnd, 0)
result = GetMenuItemInfo(hMenu, MI.wID, 0, MI)
Enabled = (MI.fState And MF_GRAYED) = 0
End Property

Public Property Let Enabled(boolClose As Boolean)
Dim hWnd As Long
Dim wFlags As Long
Dim hMenu As Long
Dim result As Long
hWnd = Application.hWndAccessApp
hMenu = GetSystemMenu(hWnd, 0)
If Not boolClose Then
wFlags = MF_BYCOMMAND Or MF_GRAYED
Else
wFlags = MF_BYCOMMAND And Not MF_GRAYED
End If
result = EnableMenuItem(hMenu, SC_CLOSE, wFlags)
End Property

Y agregua el procedimiento siguiente al módulo:

Function InitApplication()
Dim c As CloseCommand
Set c = New CloseCommand
‘Desactiva el meú cerrar.
c.Enabled = False
End Function

Fuente: www.microsoft.com

Leave a Reply