1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| Option Explicit
Private Declare Function DeleteMenu Lib "User32" (ByVal hMenu As Long, ByVal nPosition As Long, _
ByVal wFlags As Long) As Long
Private Declare Function GetSystemMenu Lib "User32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long
Private Declare Function GetWindowLong Lib "User32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "User32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Public Declare Function FWA Lib "User32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Const GWL_STYLE = (-16)
Private Const MF_BYCOMMAND = &H0&
Private Const MF_BYPOSITION = &H400
Private Const SC_MINIMIZE = &HF020
Private Const SC_MAXIMIZE = &HF030
Private Const SC_CLOSE = 6
Private Const WS_MAXIMIZEBOX = &H10000
Private Const WS_MINIMIZEBOX = &H20000
Public hwnd As Long
Private Sub minimiser()
hwnd = FWA(vbNullString, Application.Caption)
' Désactiver 'minimiser'
Dim hMenu As Long, k As Long
hMenu = GetSystemMenu(hwnd, True)
k = DeleteMenu(hMenu, SC_MINIMIZE, MF_BYCOMMAND)
k = GetWindowLong(hwnd, GWL_STYLE)
k = k Xor WS_MINIMIZEBOX
SetWindowLong hwnd, GWL_STYLE, k
End Sub
Private Sub maximiser()
' Désactiver 'maximiser'
Dim hMenu As Long, k As Long
hMenu = GetSystemMenu(hwnd, False)
k = DeleteMenu(hMenu, SC_MAXIMIZE, MF_BYCOMMAND)
k = GetWindowLong(hwnd, GWL_STYLE)
k = k Xor WS_MAXIMIZEBOX
SetWindowLong hwnd, GWL_STYLE, k
End Sub |
Partager