#include <GuiMenu.au3>
#include <GUIConstantsEx.au3>
#include <WinAPI.au3>
#include <WindowsConstants.au3>

Global Enum $idOpen = 1000, $idSave, $idInfo

_Main()

Func _Main()
	; Создаёт GUI
	GUICreate("Контекстное меню", 400, 300)
	GUISetState()

	; Регистрация обработчика сообщений
	GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")
	GUIRegisterMsg($WM_CONTEXTMENU, "WM_CONTEXTMENU")

	; Цикл выполняется, пока окно не будет закрыто
	Do
	Until GUIGetMsg() = $GUI_EVENT_CLOSE
EndFunc   ;==>_Main

; Обработчик сообщений WM_COMMAND
Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
	#forceref $hWnd, $iMsg, $ilParam
	Switch $iwParam
		Case $idOpen
			_WinAPI_ShowMsg ("Открыть")
		Case $idSave
			_WinAPI_ShowMsg ("Сохранить")
		Case $idInfo
			_WinAPI_ShowMsg ("Информация")
	EndSwitch
EndFunc   ;==>WM_COMMAND

; Обработчик сообщений WM_CONTEXTMENU
Func WM_CONTEXTMENU($hWnd, $iMsg, $iwParam, $ilParam)
	#forceref $hWnd, $iMsg, $ilParam
	Local $hMenu

	$hMenu = _GUICtrlMenu_CreatePopup ()
	_GUICtrlMenu_InsertMenuItem ($hMenu, 0, "Открыть", $idOpen)
	_GUICtrlMenu_InsertMenuItem ($hMenu, 1, "Сохранить", $idSave)
	_GUICtrlMenu_InsertMenuItem ($hMenu, 3, "", 0)
	_GUICtrlMenu_InsertMenuItem ($hMenu, 3, "Информация", $idInfo)
	_GUICtrlMenu_TrackPopupMenu ($hMenu, $iwParam)
	_GUICtrlMenu_DestroyMenu ($hMenu)
	Return True
EndFunc   ;==>WM_CONTEXTMENU