Tu crée un nouveau projet tu ajoute un module et dans le module tu tape :
Option Explicit
Public Declare Function GetSubMenu Lib "user32" (ByVal hMenu As Long, ByVal nPos As Long) As Long
Public 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
Public Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long
Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Public Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Public Const WM_SYSCOMMAND As Long = &H112
Public Const GWL_WNDPROC As Long = (-4)
Public Const SC_USER As Long = &HF700&
Public mOldProc As Long
Function WindowProc(ByVal hwnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Select Case uMsg
Case WM_SYSCOMMAND
Select Case (wParam And &HFFF0&)
Case SC_USER: MsgBox "Vous avez appuyer sur le menu", vbInformation
Case Else: WindowProc = CallWindowProc(mOldProc, hwnd, uMsg, wParam, lParam)
End Select
Case Else: WindowProc = CallWindowProc(mOldProc, hwnd, uMsg, wParam, lParam)
End Select
End Function
dans la form1 tu tape
Option Explicit
Private Sub Form_Load()
AppendMenu GetSystemMenu(hwnd, 0), 0, SC_USER, "*Nouveau*"
mOldProc = GetWindowLong(hwnd, GWL_WNDPROC)
SetWindowLong hwnd, GWL_WNDPROC, AddressOf WindowProc
End Sub
Private Sub Form_Unload(Cancel As Integer)
SetWindowLong hwnd, GWL_WNDPROC, mOldProc
End Sub
voila ce code ajoute un menu et gere le click
@+
E.B.