Private Const SC_CLOSE As Long = &HF060&
Private Const MF_BYCOMMAND = &H0&
Private Const MF_STRING = &H0&
Private Const WM_NCLBUTTONDOWN = &HA1
Private Declare Function DeleteMenu Lib "user32.dll" (ByVal hmenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
Private Declare Function GetSystemMenu Lib "user32.dll" (ByVal hwnd As Long, ByVal bRevert As Long) As Long
Private Declare Function AppendMenu Lib "User32" Alias "AppendMenuA" (ByVal hmenu As Long, ByVal wFlags As Long, ByVal wIDNewItem As Long, ByVal lpNewItem As Any) As Long
Private Declare Function SendMessage Lib "User32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function GetMenuString Lib "User32" Alias "GetMenuStringA" (ByVal hmenu As Long, ByVal wIDItem As Long, ByVal lpString As String, ByVal nMaxCount As Long, ByVal wFlag As Long) As Long
Dim hmenu As Long, hclose As String
Private Sub Command1_Click()
hclose = Space(255)
hmenu = GetSystemMenu(Me.hwnd, 0)
GetMenuString hmenu, SC_CLOSE, hclose, 256, MF_BYCOMMAND
hclose = Split(hclose, Chr(0))(0)
DeleteMenu hmenu, SC_CLOSE, MF_BYCOMMAND
End Sub
Private Sub Command2_Click()
AppendMenu hmenu, MF_STRING, SC_CLOSE, hclose
SendMessage hwnd, WM_NCLBUTTONDOWN, 2, 0&
End Sub
Private Const SC_CLOSE As Long = &HF060&
Private Const MF_BYCOMMAND = &H0&
Private Declare Function DeleteMenu Lib "user32.dll" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
Private Declare Function GetSystemMenu Lib "user32.dll" (ByVal hWnd As Long, ByVal bRevert As Long) As Long
Private Sub Command1_Click()
DeleteMenu GetSystemMenu(Me.hWnd, False), SC_CLOSE, MF_BYCOMMAND
End Sub