Друзья, нужна помощь. Нужно перечислить все контекстные меню формы, зная только hWnd окна.
Нужно узнать $FormContext, $FormContext2, только по $hForm. Ниже скрипт только для примера. Наличие переменных $FormContext.. не нужно брать в расчёт, так как на деле, UDF будет неизвестно, какие разработчик создаст меню, но их нужно перечислить, чтобы в последствии выполнить сервисное действие:
Пока остановился на WM_INITMENU, WM_INITMENUPOPUP. Не совсем то, что нужно, но под задачу пойдёт. Придётся обрабатывать на лету. Если у кого-то будут мысли, на счёт перечисления КМ, делитесь! С удовольствием посмотрел бы на реализацию.
Нужно узнать $FormContext, $FormContext2, только по $hForm. Ниже скрипт только для примера. Наличие переменных $FormContext.. не нужно брать в расчёт, так как на деле, UDF будет неизвестно, какие разработчик создаст меню, но их нужно перечислить, чтобы в последствии выполнить сервисное действие:
Код:
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Array.au3>
$hForm = GUICreate("Form", 315, 125, 302, 218)
$FormContext = GUICtrlCreateContextMenu()
$MenuItem1 = GUICtrlCreateMenuItem("MenuItem1", $FormContext)
$MenuItem2 = GUICtrlCreateMenuItem("MenuItem2", $FormContext)
$MenuItem3 = GUICtrlCreateMenuItem("MenuItem3", $FormContext)
$Button1 = GUICtrlCreateButton("Button1", 8, 8, 73, 25)
$FormContext2 = GUICtrlCreateContextMenu($Button1)
$MenuItem1 = GUICtrlCreateMenuItem("MenuItem4", $FormContext2)
$MenuItem2 = GUICtrlCreateMenuItem("MenuItem5", $FormContext2)
$MenuItem3 = GUICtrlCreateMenuItem("MenuItem6", $FormContext2)
GUISetState(@SW_SHOW)
$aContextMenu = _EnumFormContext($hForm) ; ???
_ArrayDisplay($aContextMenu)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Сообщение автоматически объединено:
Пока остановился на WM_INITMENU, WM_INITMENUPOPUP. Не совсем то, что нужно, но под задачу пойдёт. Придётся обрабатывать на лету. Если у кого-то будут мысли, на счёт перечисления КМ, делитесь! С удовольствием посмотрел бы на реализацию.
Последнее редактирование: