4. Jak zablokować przycisk X (zamknij) w oknie Accessa?

Aby przetestować poniższy przykład należy utworzyć formularz z przyciskiem o nazwie Polecenie0. Kliknięcie przycisku spowoduje, że przycisk X zamykający główne okno Accessa zostanie zablokowany i nie będzie można zamknąć aplikacji tą metodą. Oto kod, który trzeba wstawić do formularza:
Option Compare Database
Option Explicit
'Podał: Mirek :) 
'pl.comp.bazy-danych.msaccess

Private Const csvMF_BYPOSITION = &H400
Private Declare Function csvGetSystemMenu Lib "User32.dll" Alias "GetSystemMenu" (ByVal WindowHandle As Long, ByVal Revert As Long) As Long
Private Declare Function csvDeleteMenu Lib "User32.dll" Alias "DeleteMenu" (ByVal MenuHandle As Long, ByVal Position As Long, ByVal Flags As Long) As Long

Private Sub Polecenie0_Click()
Const Commandposition = 6
Dim WindowHandle, ControlMenuHandle, X As Variant
    WindowHandle = Application.hWndAccessApp
    On Error Resume Next
    ControlMenuHandle = csvGetSystemMenu(WindowHandle, 0)
    For X = 1 To 2
    Call csvDeleteMenu(ControlMenuHandle, Commandposition, csvMF_BYPOSITION)
    Next X
    Err.Clear
End Sub

P. S. Nie należy nadużywać blokowania tego rodzaju przycisków, ponieważ może być to nieco denerwujące dla użytkowników. Aby wymusić wykonanie procedury zamykającej naszą aplikację, można wstawić nasz kod do zdarzenia Form_Unload w głównym oknie programu.

K.P.