| zmenu |  |
Создание пользовательского меню для вызова команд утилиты TCIMG.
Параметры:
| Section | Имя секции. Section - имя секции в файле .tcg, в котором прописывается меню. Если имя секции начинается с tray_ , то меню создаётся в трее. Если имя секции начинается с hotkey_ , то создаётся контекстное меню, которое вызывается по заданным горячим клавишам. |
| Дополнительные параметры: |
| Flag | Проверка. 1 - если процесс меню существует, то перезапустить; если процесс не существует, то запустить. 2 - если процесс меню существует, то завершить. 3 - если процесс меню существует, то перезапустить; если процесс не существует, то не запускать. |
Примечания:
• Для создания пользовательского меню в новом или существующем файле .tcg в именной секции прописываются пункты и подменю. Если секция создаётся в новом файле .tcg, то для подключения необходимо прописать его в ключ TCG в секции [Setting] в TCIMG.ini или TCIMGU.ini
• Каждое подменю начинается с команды POPUP, за ней через пробел следует имя подменю.
Пример записи:
• Пункт меню определяется следующим образом: После команды MENUITEM через пробел следует текст пункта меню, далее через заданный разделитель в ключе Delimeters следует(ют) команда(ы) утилиты.
• Для установки "серого" некликабельного пункта используется GREYITEM
Пример записи:
• Командой SEPARATOR можно добавить горизонтальную линию-разделитель.
• Каждое всплывающее меню (POPUP) заканчивается командой END_POPUP.
Пример записи:
• Для установки значка пункту или заголовку подменю необходимо через разделитель прописать относительный или абсолютный путь к значку или путь к библиотеке со значками и номер значка через запятую:
Пример записи:
• Для установки цветного квадратного значка пункту или заголовку подменю необходимо через разделитель прописать RGB цвет:
Пример записи:
• Для сокращения могут использоваться первые буквы P (POPUP), E (END_POPUP), M (MENUITEM), G (GREYITEM), S (SEPARATOR)
• Ключи для меню в трее:
Delimeters - [обязательный]. Разделитель между названием, командой и значком.
TrayIcon - устанавливает отличающий значок для меню в трее. Прописывается относительный или абсолютный путь к значку или путь к библиотеке со значками и номер значка через запятую.
TrayHint - устанавливает подсказку для значка меню в трее.
TrayClick - устанавливает способ вызова меню трея. Может быть суммой значений:
0 - меню трея никогда не появится при клике мыши.
1 - нажатием первичной кнопки мыши.
2 - отпусканием первичной кнопки мыши.
4 - двойным кликом первичной кнопки мыши.
8 - нажатием вторичной кнопки мыши.
16 - отпусканием вторичной кнопки мыши.
32 - двойным кликом вторичной кнопки мыши.
64 - наведением на иконку в трее.
Color1 - RGB цвет корневого меню.
Color2 - RGB цвет подменю.
Style - стиль меню:
0 - обычное меню (по умолчанию).
1 - не отводит место слева от пункта для галочки/значка.
Пример записи:
• Ключи для контекстного меню:
Delimeters - [обязательный]. Разделитель между названием, командой и значком.
Number - [обязательный]. Номер вызываемого. Важно при взаимодействии команды zmenz (обратного вызова) ,если запускаются несколько hotkey_Menu
HotKey - [обязательный]. Строка последовательности нажимаемых клавиш. ('!' - эмулирует клавишу ALT, '+' - SHIFT, '^' - CTRL, '#' - WIN, остальные значения в таблице клавиш см. Дополнение №1)
→ Используются латинские буквы клавиш клавиатуры в нижнем регистре.
→ Два меню с одним и тем же набором последовательности нажимаемых клавиш будут запущены, но во 2-м горячие клавиши работать не будут.
→ Горячие клавиши не могут быть установлены, если они встроены в Windows (Ctrl+Alt+Delete, Ctrl+Shift+Esc, Win+B ...), если они зарегистрированы другими программами.
→ С версии 8.9 ключ может быть и необязательным, если используется вызов меню через команду zmenz
Color1 - RGB цвет корневого меню.
Color2 - RGB цвет подменю.
Style - стиль меню:
0 - обычное меню (по умолчанию).
1 - не отводит место слева от пункта для галочки/значка.
При создании контекстного меню значок в трее не создаётся.
Пример записи:
Если командная строка начинается с ;; то последующая строка будет вставлена в активное приложение с записью в буфер обмена.
Если командная строка начинается с :: то последующая строка будет вставлена в активное приложение без записи в буфер обмена.
Дополнительные символы, которые можно использовать в строке: "@CR" - Символ возврата каретки, Chr(13), "@LF" - Символ перевода строки, Chr(10), "@CRLF" = @CR & @LF, "@TAB" - Символ Tab, Chr(9)
• Команды для меню:
Если в командах используются параметры Total Commander (%p, %t, %L ... см. Дополнение №7), то они будут запущены через UserCmd.ini, при этом в относительных путях необходимо удваивать знак процента (%%WINDIR%%).
Если в командах не используются параметры Total Commander, то они будут запущены напрямую через TCIMG.
Может выглядеть следующим образом:
• Количество меню:
Может быть запущено несколько экземпляров меню, но с разными настройками.
Вторичный запуск меню с настройками одной и той же секции игнорируется.
Для запуска команды вместе с запуском Total Commander см. Дополнение №4.
Дополнительные возможности:
• Модуль "Слежение за буфером обмена":
В любом месте меню, где встретится тег $CLIP$ будет создано меню, пунктами которых будут фразы записанные в буфер обмена.
Имена и содержимое пунктов заполняется сверху вниз, в зависимости от изменения текстового буфера обмена.
Ключи определяющие вид модуля:
→ Clip - определяет количество пунктов.
→ ClipLen - определяет максимальное число символов названия пунктов.
→ ClipIconMenu - устанавливает значок для заголовка подменю "Слежение за буфером".
→ ClipIconItem1 - устанавливает значок для "пустых" пунктов.
→ ClipIconItem2 - устанавливает значок для "не пустых" пунктов.
→ ClipColor - устанавливает RGB цвет для подменю "Слежение за буфером".
Пример записи:

При нажатии на "не пустом" пункте содержимое будет записано в буфер обмена.
Для контекстного меню, которое вызывается горячими клавишами есть дополнительные возможности при нажатии на пункте:
→ При зажатии клавиши SHIFT содержимое пункта вставляется в активный элемент окна.
→ При зажатии клавиши CTRL содержимое пункта записывается в буфер обмена + вставляется в активный элемент окна.
→ При нажатии на пункте правой кнопкой мыши содержимое пункта вставляется в активный элемент окна.
!!! Модуль игнорирует буфер обмена при вызове утилиты, в параметрах которой есть команда clpclr
• Дополнительные пункты:
Дополнительные обязательные пункты: "Перезапуск", "О программе", "Выход" прописываются в конце меню через разделитель.
Ключи определяющие вид пунктов:
→ ItemPlus - 0 - пункты создаются в корневом уровне. 1 - пункты создаются в подменю "Дополнительно", путь позволяет установить значок для подменю.
→ Color3 - устанавливает RGB цвет для подменю.
→ ItemProgam - 0 - устанавливать значок, 1 - не устанавливать для пункта "О программе".
→ IconRestart - устанавливает значок для пункта "Перезапуск".
→ IconExit - устанавливает значок для пункта "Выход".
• Отдельный цвет для каждого подменю:
Для установки разного цвета для каждого подменю в 3-м параметре POPUP через разделитель (после значка) прописывается RGB цвет:
Пример записи:
• Перенос подменю и пунктов в отдельные колонки:
Для переноса пунктов или подменю в 4-м параметре POPUP или MENUITEM через разделитель прописывается тег $BREAK$
Пример записи:

Добавлено в версии 29.1
При использовании тега $BREAK$ можно воспользоваться ключом Break

• Запись информации о запущенном процессе:
При запуске в TCIMG.ini в секцию [ZMenu] в ключ TrayPID записывается PID запущенного процесса меню в трее
При запуске контекстного меню информация записывается в ключи:
N_PID - записывается PID процесса меню
N_HGUI - записывается хендл окна, которому принадлежит меню
N_TITLE - записывается заголовок окна, которому принадлежит меню
N_HMENU - записывается хендл меню
Где N_... - номер запущенного меню
Информацию ключей можно использовать в дальнейшей автоматизации.
Контекстное меню можно вызывать не только по нажатию горячих клавиш, но и через ярлык или кнопку, создав с помощью команды keybd необходимый вызов:
Пример кнопки:
В версии 8.9 появилась возможность вызывать контекстное меню с помощью команды zmenz, не задействуя горячие клавиши
• Модуль "Избранное".
В версии 8.2 появилась возможность добавлять и удалять пункты из избранного во время работы утилиты:
→ Для появления меню необходимо вставить в корневой уровень меню пункты:
Пример записи: → Название может быть любым, его же необходимо прописать в ключе FavouritesName
Ключи определяющие вид пунктов:
→ FavouritesName - имя модуля "Избранное"
→ FavouritesLenItem - максимальная длина текста пунктов в модуля "Избранное"
→ FavouritesInsert - 1 - вставлять пункты в начало списка, 2 - вставлять в конец списка
→ FavouritesIconItem1 - устанавливает иконку для модуля "Избранное"
→ FavouritesIconItem2 - устанавливает иконку для пунктов модуля"Избранное"
→ FavouritesColor - устанавливает RGB цвет модуля "Избранное"
Пример записи:
• Для добавления пунктов в меню должен быть Модуль "Слежение за буфером обмена" (тег $CLIP$)
• Чтобы добавить пункт необходимо, удерживая ПРОБЕЛ, нажать на не пустой строке пункта модуля "Слежение за буфером обмена" левой кнопкой мыши.
• При этом из строки буфера обмена будет создан пункт в модуле "Избранное"
• Этим пунктом (строкой) можно пользоваться на постоянной основе.
• Строка преобразовывается и автоматически записывается в файл меню.
• Так же созданные пункты можно "вручную" перенести в другой раздел и "избранное" будет создаваться заново.
• Для удаления из модуля "Избранное" необходимо, удерживая ПРОБЕЛ, нажать на пункте левой кнопкой мыши.
• При этом пункт удаляется из файла меню.
• При добавление/удалении меню автоматически перезапускается (при этом модуль "Слежение за буфером" очищается)
• Тег $CLIP$ должен находится в любом месте ВНЕ модуля "Избранное"

См. также:
anf2d, arr2d, asave, cmd64, cmdcm, cname, cycles, dilog, dubls, dumpxx, envgt, global, hotkiy, ifthen, inbox, listx, macro, noglob, pause, pressy, renew, scrpt, sends, slects, slist, swcmd, swcths, tempxx, tempz, timess, zmenz
sends=<inikey=8//%%TCIMG_PATH%%\TCIMG.ini//ZMenu//1_PID> <IF> [info=s70*GLOBALSENDS<1>] = 1 <THEN> keybd=0~~+{TAB} <ENDIF> ;; вызвать контекстное меню, запущенное командой zmenu=hotkey_Menu_Example - горячие клавиши SHIFT + TAB (если нет процесса, то не вызывать)
zmenu=hotkey_Menu_Example zmenz=1||2 ;; запустить меню, вызвать и закрыть процесс
zmenu=hotkey_Menu_Example ;; создать контекстное меню для запуска команд утилиты TCIMG, вызывается по заданным горячим клавишам
zmenu=hotkey_Menu_Line_Example zmenz=2||2 ;; запустить меню, вызвать и закрыть процесс
zmenu=tray_Menu_Example ;; создать меню в трее для запуска команд утилиты TCIMG
zmenu=tray_Menu_Example||1 ;; создать меню в трее для запуска команд утилиты TCIMG; если процесс меню существует, то перезапустить
zmenu=tray_Menu_Example||2 ;; создать меню в трее для запуска команд утилиты TCIMG; если процесс меню существует, то завершить
zmenu=tray_Menu_Example||3 ;; создать меню в трее для запуска команд утилиты TCIMG; если процесс меню существует, то перезапустить, если не существует, то не запускать
zmenz=1||1 ;; вызвать запущенное 1-е меню zmenu=hotkey_...
zmenz=1||2 ;; вызвать запущенное 1-е меню zmenu=hotkey_... , после вызова процесс меню закрывается
© Аверин Андрей для Total Commander Image Averin-And@yandex.ru