Menu

메뉴와 메뉴 항목을 생성, 삭제, 변경 그리고 보여줍니다. 트레이 아이콘과 그의 툴팁을 변경합니다. 컴파일된 스크립트의 메인 창을 열지 말지 제어합니다.

Menu, MenuName, SubCommand , Value1, Value2, Value3, Value4

The MenuName parameter can be Tray or the name of any custom menu. 맞춤 메뉴는 그의 이름이 Add 부-명령어에 처음 사용될 때 자동으로 생성됩니다. 예를 들어: Menu, MyMenu, Add, Item1. 일단 생성되면, 맞춤 메뉴는 Show 부-명령어로 보여줄 수 있습니다. Add 부-명령어를 통하여 여러 메뉴에 부메뉴로 부착할 수도 있습니다.

SubCommand, Value1, Value2, Value3 그리고 Value4 매개변수는 서로 의존적입니다. 그리고 그 사용법은 아래에 기술합니다.

목차

부-명령어

For SubCommand, specify one of the following:

Add

항목을 추가하거나, 부메뉴를 새로운 부메뉴 또는 라벨로 갱신하거나 또는 한 항목을 정상 항목에서 부메뉴로 (또는 그 반대로) 변환합니다.

Menu, MenuName, Add , MenuItemName, LabelOrSubmenu, Options

이것은 다중 목적의 명령어로서. MenuItemName is the name or position of a menu item (see MenuItemName for details). MenuItemName이 아직 존재하지 않으면, 메뉴에 추가됩니다. 그렇지 않으면, MenuItemName은 새로 지정된 LabelOrSubmenu로 갱신됩니다.

메뉴 가름줄을 추가하려면, 세 개의 매개변수를 모두 생략하십시오.

라벨 서브루틴은 사용자가 메뉴 항목을 선택할 때 새 쓰레드로 실행됩니다 (Gosub 그리고 핫키 서브루틴과 비슷합니다). LabelOrSubmenu를 생략하면, MenuItemName이 라벨과 메뉴 항목의 이름으로 사용됩니다.

[v1.1.20+]: 기존의 라벨 이름이 아니면, LabelOrSubmenu는 함수의 이름이거나, 아니면 함수 객체를 담고 있는 단일 변수 참조일 수 있습니다. 예를 들어, %FuncObj% 또는 % FuncObj. See example #5 for a fully functional demonstration. 함수 객체를 돌려주는 다른 표현식은 현재 지원하지 않습니다. 함수는 아래에 보여주는 바와 같이 선택적으로 매개변수를 정의할 수 있습니다:

FunctionName(ItemName, ItemPos, MenuName)

MenuItemName를 부메뉴가 되게 만들려면 -- 선택되면 새 메뉴를 여는 메뉴 항목을 만들려면 -- LabelOrSubmenu에 쌍점 그리고 기존 맞춤 메뉴의 MenuName을 지정하십시오. 예를 들어:

Menu, MySubmenu, Add, Item1
Menu, Tray, Add, This menu item is a submenu, :MySubmenu

If not omitted, Options must be a space- or tab-delimited list of one or more of the following options:

옵션 설명
Pn Replace n with the menu item's thread priority, e.g. P1. If this option is omitted when adding a menu item, the priority will be 0, which is the standard default. 메뉴 항목을 갱신할 때 생략하면, 항목의 우선순위는 바뀌지 않습니다. 우선 순위에 십진수를 사용하십시오 (십육진수는 불가).
+Radio [v1.1.23+]: If the item is checked, a bullet point is used instead of a check mark.
+Right [v1.1.23+]: The item is right-justified within the menu bar. This only applies to menu bars, not popup menus or submenus.
+Break [v1.1.23+]: The item begins a new column in a popup menu.
+BarBreak [v1.1.23+]: As above, but with a dividing line between columns.

The plus sign (+) is optional and can be replaced with minus (-) to remove the option, as in -Radio. Options are not case sensitive.

To change an existing item's options without affecting its label or submenu, simply omit the LabelOrSubmenu parameter.

Insert [v1.1.23+]

Inserts a new item before the specified menu item.

Menu, MenuName, Insert , MenuItemName, ItemToInsert, LabelOrSubmenu, Options

Usage is identical to the Add sub-command (above), except that MenuItemName is always the name or position of an existing menu item (see MenuItemName for details) and ItemToInsert is the name of a new menu item to insert before MenuItemName. Menu items can also be appended by omitting MenuItemName (by writing two consecutive commas). Unlike the Add sub-command, the Insert sub-command creates a new menu item even if MenuItemName matches the name of an existing menu item.

Delete

Deletes the specified menu item from the menu.

Menu, MenuName, Delete , MenuItemName

MenuItemName is the name or position of a menu item (see MenuItemName for details). "Exit" (아래 참조)와 같은 표준 메뉴 항목은 개별적으로 삭제할 수 없습니다. If the default menu item is deleted, the effect will be similar to having used the NoDefault sub-command.

If MenuItemName is omitted, the entire MenuName menu will be deleted as will any menu items in other menus that use MenuName as a submenu. Deleting a menu also causes the current Win32 menu of each of its submenus to be destroyed, to be recreated later as needed. Other menus which contain those submenus may also be affected. This can be avoided by deleting the items of the menu with DeleteAll before deleting the menu itself.

DeleteAll

Deletes all custom menu items from the menu.

Menu, MenuName, DeleteAll

Any existing standard menu items (see below) remain unaffected. Delete 부-명령어로 완전히 삭제되는 메뉴와 다르게 (위 참조), 빈 메뉴는 여전히 존재합니다. 그래서 그 메뉴를 부메뉴로 사용하는 다른 메뉴도 여전히 그 부메뉴를 유지합니다.

Rename

Renames the specified menu item to NewName.

Menu, MenuName, Rename, MenuItemName , NewName

If NewName is blank, the specified menu item will be converted into a separator line. MenuItemName is the name or position of a menu item (see MenuItemName for details). 그 메뉴 항목의 현재 목표 라벨이나 부메뉴는 바뀌지 않습니다. [v1.1.23+]: A separator line can be converted to a normal menu item by specifying the position& of the separator and a non-blank NewName, and then using the Add sub-command to give the menu item a label or submenu.

Check

Adds a visible checkmark in the menu next to the specified menu item (if there isn't one already).

Menu, MenuName, Check, MenuItemName

MenuItemName is the name or position of a menu item (see MenuItemName for details).

Uncheck

Removes the checkmark (if there is one) from the specified menu item.

Menu, MenuName, Uncheck, MenuItemName

MenuItemName is the name or position of a menu item (see MenuItemName for details).

ToggleCheck

Adds a checkmark to the specified menu item if there wasn't one; otherwise, removes it.

Menu, MenuName, ToggleCheck, MenuItemName

MenuItemName is the name or position of a menu item (see MenuItemName for details).

Enable

Allows the user to once again select the specified menu item if was previously disabled (grayed).

Menu, MenuName, Enable, MenuItemName

MenuItemName is the name or position of a menu item (see MenuItemName for details).

Disable

Changes the specified menu item to a gray color to indicate that the user cannot select it.

Menu, MenuName, Disable, MenuItemName

MenuItemName is the name or position of a menu item (see MenuItemName for details).

ToggleEnable

Disables the specified menu item if it was previously enabled; otherwise, enables it.

Menu, MenuName, ToggleEnable, MenuItemName

MenuItemName is the name or position of a menu item (see MenuItemName for details).

Default

Changes the menu's default item to be the specified menu item and makes its font bold.

Menu, MenuName, Default , MenuItemName

TRAY 말고 메뉴에 기본 항목을 설정하는 것은 순전히 장식적인 효과입니다. MenuItemName is the name or position of a menu item (see MenuItemName for details). 사용자가 트레이 아이콘을 클릭할 때, 그의 기본 메뉴 항목이 기동됩니다. 기본 항목이 없다면, 더블클릭해도 아무 효과가 없습니다. If MenuItemName is omitted, the effect is the same as having used the NoDefault sub-command below.

NoDefault

Reverses setting a user-defined default menu item.

Menu, MenuName, NoDefault

트레이 메뉴에 대하여: Changes the menu back to having its standard default menu item, which is OPEN for non-compiled scripts and none for compiled scripts (except when the MainWindow sub-command is in effect). 이전에 NoStandard 부-명령어를 사용했기 때문에 (아래 참조) OPEN 메뉴 항목이 존재하지 않으면, 기본 항목이 없으므로 트레이 아이콘을 더블 클릭해도 아무 효과가 없습니다. TRAY 말고 다른 메뉴에 대하여: 기존의 기본 항목에는 볼드체가-아닌 글꼴을 돌려줍니다.

Standard

표준 메뉴 항목을 (아직 존재하지 않으면) 메뉴 아래에 삽입합니다.

Menu, MenuName, Standard

이 부-명령어는 트레이 메뉴나 기타 메뉴에 사용될 수 있습니다.

NoStandard

Removes all standard (non-custom) menu items from the menu (if they are present).

Menu, MenuName, NoStandard

이 부-명령어는 트레이 메뉴나 기타 메뉴에 사용될 수 있습니다.

Icon

Affects the tray icon or [in AHK_L 17+] the menu item's icon depending on syntax usage below.

Setting the tray icon

Changes the script's tray icon to one of the ones from FileName.

Menu, Tray, Icon , FileName, IconNumber, 1

다음 유형의 파일을 지원합니다: ICO, CUR, ANI, EXE, DLL, CPL, SCR, 그리고 아이콘 자원을 담은 기타 유형들. 파일에서 첫 번째 아이콘 말고 아이콘 그룹을 사용하려면, 그 번호를 IconNumber에 지정하십시오 (생략하면, 기본 값은 1입니다). 예를 들어, 2이면 기본 아이콘을 두 번째 아이콘 그룹으로부터 적재할 것입니다. IconNumber가 음수이면, 그의 절대 값은 실행 파일 안의 아이콘의 자원 ID로 간주됩니다. 별표 (*)를 FileName에 지정하면 스크립트를 기본 아이콘으로 복구할 수 있습니다.

마지막 매개변수: 1을 지정하면 아이콘을 동결합니다. 또는 0이면 그 아이콘을 해동합니다 (또는 비워 두면 동결/해동 상태를 바꾸지 않고 그대로 유지할 수 있습니다). 아이콘이 동결될 때, PauseSuspend는 그것을 바꾸지 않습니다. 주의: 현재 아이콘을 동결하거나 해동하려면, 1 또는 0을 다음 예제와 같이 사용하십시오: Menu, Tray, Icon,,, 1.

트레이 아이콘을 변경하면 InputBox, Progress, 그리고 이어서-생성되는 GUI 창이 보여주는 아이콘도 변경됩니다. 컴파일된 스크립트도 영향을 받습니다. 컴파일할 때 맞춤 아이콘을 지정했더라도 마찬가지입니다.

주의: 아이콘을 변경하더라도 트레이 아이콘은 언하이드되지 않습니다. 이전에 #NoTrayIcon과 같은 수단으로 숨겼다면 말입니다; 언하이드 하려면, (매개변수 없이) Menu, Tray, Icon를 사용하십시오.

.ICO 말고 다른 유형으로부터 트레이 아이콘을 적재할 때 약간 왜곡이 발생할 수 있습니다. 특히 16x16 아이콘이 그렇습니다. 이를 피하려면, 원하는 트레이 아이콘을 .ICO 파일에 저장하십시오.

어떤 아이콘들은 운영 체제의 DLL과 CPL에 내장되어 있어서 유용합니다. 예를 들어: Menu, Tray, Icon, Shell32.dll, 174.

내장 변수 A_IconNumberA_IconFile에는 현재 아이콘의 번호와 (완전한 경로) 이름이 들어 있습니다 (기본 아이콘이면 둘 다 비어 있습니다).

[v1.1.23+]: An icon handle can be used instead of a filename. For example, Menu Tray, Icon, HICON:*%handle%. The asterisk is required as the icon must be "loaded" twice: once for the small icon and again for the large icon.

[v1.1.27+]: Non-icon image files and bitmap handles are supported for Filename. 예를 들어, Menu Tray, Icon, HBITMAP:*%handle%.

Sets a icon for the specified menu item.

Menu, MenuName, Icon, MenuItemName, FileName , IconNumber, IconWidth

MenuItemName is the name or position of a menu item (see MenuItemName for details). FileName은 아이콘 파일이거나 AutoHotkey가 지원하는 형식이 이미지일 수 있습니다. 파일에서 첫 번째 아이콘 말고 아이콘 그룹을 사용하려면, 그 번호를 IconNumber에 지정하십시오 (생략하면, 기본 값은 1입니다). IconNumber가 음수이면, 그의 절대값이 실행 파일 안에 있는 아이콘의 자원 ID라고 간주됩니다. 아이콘의 너비는 IconWidth에 지정하십시오. IconNumber이 나타내는 아이콘 그룹 안에 여러 아이콘 크기가 있다면, 가장 근접하게 부합하는 아이콘이 사용되고 그 아이콘이 지정된 크기에 맞게 조절됩니다. See example #4 for usage examples.

현재 Windows Vista 이후에서 아이콘에 투명성을 유지하도록 설정하려면 "실제 크기"를 지정하는 것이 필요합니다. 예를 들어:

Menu, MenuName, Icon, MenuItemName, Filename.png,, 0

알려진 한계: Gui 메뉴 바의 아이콘들은 Windows XP 이전에서 올바르게 배치되지 않습니다.

[v1.1.23+]: A bitmap or icon handle can be used instead of a filename. 예를 들어, HBITMAP:%handle%.

NoIcon

Affects the tray icon or [in AHK_L 17+] the menu item's icon depending on syntax usage below.

Removing the tray icon

트레이 아이콘이 존재하면 제거합니다.

Menu, Tray, NoIcon

이 부-명령어를 스크립트 맨 꼭대기에 사용하면, 스크립트가 기동할 때 트레이 아이콘이 잠깐 보일 수 있습니다. 이를 피하려면 , 대신 #NoTrayIcon을 사용하십시오. 트레이 아이콘이 현재 숨어 있으면 내장 변수 A_IconHidden 안에 1이 담깁니다. 그렇지 않으면 0이 담깁니다.

Removing the menu item's icon [AHK_L 17+]

Removes the icon from the specified menu item, if any.

Menu, MenuName, NoIcon, MenuItemName

MenuItemName is the name or position of a menu item (see MenuItemName for details).

Tip

Changes the tray icon's tooltip.

Menu, Tray, Tip , Text

The tray icon's tooltip is displayed when the mouse hovers over it. 여러-줄 툴팁을 생성하려면, 각 줄 사이에 라인피드 (`n) 문자를 사용하십시오. 예, "Line1`nLine2". Text에서 앞쪽 127 개만 보여줍니다. 그리고 Text는 (존재하면) 첫 번째 탭 문자에서 잘려 나갑니다. Text를 생략하면, 툴팁은 그의 기본 텍스트로 복구됩니다. 내장 변수 A_IconTip에는 툴팁의 현재 텍스트가 담깁니다 (텍스트가 기본 값이면 비어 있습니다).

Show

Displays MenuName.

Menu, MenuName, Show , X, Y

The user can select an item with arrow keys, menu shortcuts (underlined letters), or the mouse. 어떤 메뉴도 보여줄 수 있습니다. 여기에는 트레이 메뉴도 포함되지만, GUI 메뉴 바는 예외입니다. X와 Y를 모두 생략하면, 메뉴는 마우스 커서의 현재 위치에 보여집니다. 둘 중에 하나만 생략하면, 생략된 위치에 마우스 커서의 위치가 대신 사용됩니다. X와 Y는 활성 창에 상대적입니다. Specify CoordMode, Menu beforehand to make them relative to the entire screen.

Color

Changes the background color of the menu to ColorValue.

Menu, MenuName, Color, ColorValue , Single

ColorValue is one of the 16 primary HTML color names or a 6-digit RGB color value (see color chart). ColorValue를 비워 두면 (또는 단어 Default를 지정하면) 메뉴를 그의 기본 컬러로 복구할 수 있습니다. 단어 Single이 다음 매개변수에 존재하지 않으면, 이 메뉴에 부착된 부메뉴들도 모두 색이 바뀝니다.

Click

Sets the number of clicks to activate the tray menu's default menu item.

Menu, Tray, Click, ClickCount

1을 ClickCount에 지정하면 한 번 클릭으로 트레이 메뉴의 기본 메뉴 항목을 활성화 할 수 있습니다. 2를 ClickCount에 지정하면 (더블-클릭해) 기본 행위로 돌아올 수 있습니다. 예를 들어: Menu, Tray, Click, 1.

MainWindow

Allows the main window of a script to be opened via the tray icon, which is impossible by default for compiled or embedded scripts.

Menu, Tray, MainWindow

This sub-command restores the "Open" option to the tray menu, unless the NoStandard sub-command was used. 또한 예를 들어 "최근에 실행된 줄"과 같이, 메인 창의 View 메뉴에 있는 항목들을 활성화 합니다. 이 메뉴는 스크립트의 소스 코드와 기타 정보를 보여줍니다.

This mode is the default for scripts which are neither compiled nor embedded.

NoMainWindow

Prevents the main window from being opened via the tray icon.

Menu, Tray, NoMainWindow

This sub-command removes the standard "Open" option from the tray menu. It also disables the items in the main window's View menu such as "Lines most recently executed". However, the following commands are still able to show the main window and activate the corresponding View options when they are encountered in the script at runtime: ListLines, ListVars, ListHotkeys, 그리고 KeyHistory.

This sub-command does not prevent the main window from being shown by WinShow or inspected by ControlGetText or similar methods, but it does prevent the script's source code and other info from being exposed via the main window, except when one of the commands listed above is called by the script.

This mode is the default for scripts which are compiled or embedded.

[v1.1.34+]: This sub-command can be used even in a non-compiled script.

UseErrorLevel

Skips any warning dialogs and thread terminations whenever the Menu command generates an error.

Menu, MenuName, UseErrorLevel , Off

이 옵션이 스크립트에 사용되지 않으면, 기본 값은 OFF입니다. OFF 설정은 Menu 명령어가 에러를 발생시킬 때마다 대화상자를 보여주고 현재 쓰레드를 종료합니다. Menu, Tray, UseErrorLevel를 지정하면 그 대화상자와 쓰레드 종료를 막을 수 있습니다; 대신에, ErrorLevel은 문제가 있으면 1이 없으면 0이 설정됩니다. To turn this option back off, specify OFF (or in [v1.1.30+], 0) for the next parameter. 이 설정은 전역적입니다. MenuName은 물론이고, 모든 메뉴에 영향을 미친다는 뜻입니다.

The name or position of a menu item. Some common rules apply to this parameter across all sub-commands which use it:

Win32 Menus

As items are added to a menu or modified, the name and other properties of each item are recorded by the Menu command, but the actual Win32 menu is not constructed immediately. This occurs when the menu or its parent menu is attached to a GUI or shown, either for the first time or if the menu has been "destroyed" since it was last shown. Any of the following can cause this Win32 menu to be destroyed:

When the Win32 menu is destroyed, the Win32 menu of each submenu and parent menu may also be destroyed.

When a menu which contains the standard items has its Win32 menu recreated, the standard items are placed at the top.

Any modifications which are made to the menu directly by Win32 API calls only apply to the current "instance" of the menu, and are lost when the menu is destroyed.

Each menu item is assigned an ID when it is first added to the menu. Scripts cannot rely on an item receiving a particular ID, but can retrieve the ID of an item by using GetMenuItemID as shown in the MenuGetHandle example. This ID cannot be used with the Menu command, but can be used with various Win32 functions.

논평

A menu usually looks like this:

Menu

메뉴와 메뉴 항목의 이름은 최대 260 문자까지 허용됩니다.

가름 줄은 Menu, MenuName, Add를 사용하면 메뉴에 추가할 수 있습니다 (즉, 다른 모든 매개변수 생략). [v1.1.23+]: To delete separator lines individually, identify them by their position in the menu. For example, use Menu, MenuName, Delete, 3& if there are two items preceding the separator. Alternatively, use Menu, MenuName, DeleteAll and then re-add your custom menu items.

새 메뉴 항목은 언제나 메뉴 아래에 추가됩니다. 트레이 메뉴에 대하여: 여러분이 메뉴 항목을 표준 메뉴 항목보다 위에 놓으려면 (여러분의 메뉴 항목을 추가한 후) Menu, Tray, NoStandard를 실행한 다음에 Menu, Tray, Standard를 실행하십시오.

"Pause Script" 그리고 "Suspend Hotkeys"와 같은 표준 메뉴 항목은 메뉴 부-명령어로 개별적으로 작동시킬 수 없습니다.

메뉴가 완전히 비게 되면 -- 예를 들어 Menu, MyMenu, DeleteAll을 사용하여 -- 보여줄 수 없습니다. 트레이 메뉴가 비게 되면, 트레이 아이콘에 우클릭과 더블클릭이 아무 효과가 없습니다 (그런 경우 보통 #NoTrayIcon을 사용하는 편이 더 좋습니다).

메뉴 항목의 서브루틴이 이미 실행 중이고 사용자가 같은 메뉴를 다시 선택한다면, 새 쓰레드가 생성되고 이전의 쓰레드를 가로채어 같은 서브루틴을 실행합니다. 대신에 그런 이벤트를 나중으로 버퍼 처리하려면, Critical을 서브루틴의 첫 줄에 사용하십시오 (그렇지만, 이렇게 하면 또 핫키 누름과 같은 다른 쓰레드도 역시 버퍼/연기 처리됩니다).

서브루틴이 메뉴 항목을 통하여 기동할 때마다 그 서브루틴은 예를 들어 SendMode에 설정된 기본 값을 가지고 새롭게 시작합니다. 이런 기본 값은 자동-실행 섹션에서 바꿀 수 있습니다.

내장 변수 A_ThisMenuItem 그리고 A_ThisMenuItemPos에 사용자가 최근에 선택한 맞춤 메뉴 항목의 이름과 위치가 담겨 있습니다 (비어 있으면 선택 없음). 비슷하게, A_ThisMenuA_ThisMenuItem가 선택된 메뉴의 이름입니다. 이런 변수들은 내용이 언제나 같지 않은 메뉴를 구성할 때 유용합니다. 그런 경우, 보통 그런 모든 메뉴 항목이 같은 라벨을 가리키도록 만들고 그 라벨이 위의 변수들을 참조해서 어떤 행위를 취할지 결정하는 것이 좋습니다.

비-핫키, 비-GUI 스크립트를 계속 실행되도록 유지하려면 -- 예를 들어 오직 맞춤 메뉴나 메뉴 항목만 담고 있는 스크립트 -- #Persistent를 사용하십시오.

GUI, Threads, Thread, Critical, #NoTrayIcon, Gosub, Return, SetTimer, #Persistent

예제

새 메뉴 항목을 트레이 아이콘 메뉴의 아래에 부착합니다.

#Persistent  ; 사용자가 종료할 때까지 스크립트의 실행을 계속 유지합니다.
Menu, Tray, Add  ; 가름 줄을 만듭니다.
Menu, Tray, Add, Item1, MenuHandler  ; 새 메뉴 항목을 만듭니다.
return

MenuHandler:
MsgBox You selected %A_ThisMenuItem% from menu %A_ThisMenu%.
return

Creates a popup menu that is displayed when the user presses a hotkey.

; 약간의 항목을 부착해서 팝업 메뉴를 생성합니다.
Menu, MyMenu, Add, Item1, MenuHandler
Menu, MyMenu, Add, Item2, MenuHandler
Menu, MyMenu, Add  ; Add a separator line.

; 위의 메뉴의 부메뉴가 될 또다른 메뉴를 생성합니다.
Menu, Submenu1, Add, Item1, MenuHandler
Menu, Submenu1, Add, Item2, MenuHandler

; 첫 번째 메뉴에 부메뉴를 하나 생성합니다 (오른쪽 화살표 표시). 사용자가 그것을 선택하면, 두 번째 메뉴가 보여집니다.
Menu, MyMenu, Add, My Submenu, :Submenu1

Menu, MyMenu, Add  ; 그 부메뉴 아래에 가름 줄을 추가합니다.
Menu, MyMenu, Add, Item3, MenuHandler  ; 그 부메뉴 아래에 또다른 메뉴 항목을 추가합니다.
return  ; 스크립트의 자동 실행 섹션이 끝났습니다.

MenuHandler:
MsgBox You selected %A_ThisMenuItem% from the menu %A_ThisMenu%.
return

#z::Menu, MyMenu, Show  ; 즉, Win-Z 핫키를 누르면 메뉴가 나타납니다.

다양한 메뉴 부-명령어의 예를 보여줍니다.

#Persistent
#SingleInstance
Menu, Tray, Add ; 가름 줄
Menu, Tray, Add, TestToggle&Check
Menu, Tray, Add, TestToggleEnable
Menu, Tray, Add, TestDefault
Menu, Tray, Add, TestStandard
Menu, Tray, Add, TestDelete
Menu, Tray, Add, TestDeleteAll
Menu, Tray, Add, TestRename
Menu, Tray, Add, Test
return

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

TestToggle&Check:
Menu, Tray, ToggleCheck, TestToggle&Check
Menu, Tray, Enable, TestToggleEnable ; 다음 테스트도 활성화 됩니다. 자기 자신을 끈 것은 언두할 수 없기 때문입니다.
Menu, Tray, Add, TestDelete ; 위와 비슷합니다.
return

TestToggleEnable:
Menu, Tray, ToggleEnable, TestToggleEnable
return

TestDefault:
if (Default = "TestDefault")
{
    Menu, Tray, NoDefault
    Default := ""
}
else
{
    Menu, Tray, Default, TestDefault
    Default := "TestDefault"
}
return

TestStandard:
if (Standard != false)
{
    Menu, Tray, NoStandard
    Standard := false
}
else
{
    Menu, Tray, Standard
    Standard := true
}
return

TestDelete:
Menu, Tray, Delete, TestDelete
return

TestDeleteAll:
Menu, Tray, DeleteAll
return

TestRename:
if (NewName != "renamed")
{
    OldName := "TestRename"
    NewName := "renamed"
}
else
{
    OldName := "renamed"
    NewName := "TestRename"
}
Menu, Tray, Rename, %OldName%, %NewName%
return

Test:
MsgBox, You selected "%A_ThisMenuItem%" in menu "%A_ThisMenu%".
return

Demonstrates how to add icons to menu items.

Menu, FileMenu, Add, Script Icon, MenuHandler
Menu, FileMenu, Add, Suspend Icon, MenuHandler
Menu, FileMenu, Add, Pause Icon, MenuHandler
Menu, FileMenu, Icon, Script Icon, %A_AhkPath%, 2 ; 파일로부터 두 번째 아이콘 그룹을 사용합니다.
Menu, FileMenu, Icon, Suspend Icon, %A_AhkPath%, -206 ; 자원 식별자가 206인 아이콘을 사용합니다.
Menu, FileMenu, Icon, Pause Icon, %A_AhkPath%, -207 ; 자원 식별자가 207인 아이콘을 사용합니다.
Menu, MyMenuBar, Add, &File, :FileMenu
Gui, Menu, MyMenuBar
Gui, Add, Button, gExit, Exit This Example
Gui, Show
return

MenuHandler:
return

Exit:
ExitApp

Demonstrates the usage of BoundFunc objects to pass additional parameters when using a function instead of a subroutine.

; Bind parameters to the function and return BoundFunc objects:
BoundGivePar := Func("GivePar").Bind("First", "Test one")
BoundGivePar2 := Func("GivePar").Bind("Second", "Test two")

; Create the menu and show it:
Menu MyMenu, Add, Give parameters, % BoundGivePar
Menu MyMenu, Add, Give parameters2, % BoundGivePar2
Menu MyMenu, Show

; Definition of custom function GivePar:
GivePar(a, b, ItemName, ItemPos, MenuName)
{
    MsgBox % "a:`t`t" a "`n"
           . "b:`t`t" b "`n"
           . "ItemName:`t" ItemName "`n"
           . "ItemPos:`t`t" ItemPos "`n"
           . "MenuName:`t" MenuName
}