سلام.
و بالاخره Finally:
گرفتن آی.دی آیتم منوی کلیک شده توسط WndProc بدون خطا:
Public Const WM_MENUSELECT = &H11F
Protected Overrides Sub WndProc(ByRef m As Message)
Static a As Integer = 0
Static MenuID As Long = 0
If m.Msg = WM_MENUSELECT And m.LParam <> hSysMenu Then
If m.LParam Then
MenuID = m.WParam.ToInt64 And &HFFFF&
RaiseEvent Selected(MenuID)
Else
If MenuID > 0 Then
RaiseEvent Clicked(MenuID)
MenuID = 0
End If
End If
ElseIf m.Msg = WM_MENUSELECT Then
MenuID = 0
End If
MyBase.WndProc(m)
End Sub
hSysMenu منوی سیستمی فرم هست که از طریق تابع GetSystemMenu از API مقداردهی شده است.
Declare Function GetSystemMenu Lib "user32" Alias "GetSystemMenu" (
ByVal hwnd As Long,
ByVal bRevert As Boolean) As Long
SysMenuAddedItem01.jpg