Описание команды


zmenu

Создание пользовательского меню для вызова команд утилиты TCIMG.

zmenu=Section, ||Flag

Параметры:

SectionИмя секции. Section - имя секции в файле .tcg, в котором прописывается меню.
  Если имя секции начинается с tray_ , то меню создаётся в трее.
  Если имя секции начинается с hotkey_ , то создаётся контекстное меню, которое вызывается по заданным горячим клавишам.
Дополнительные параметры:
FlagПроверка.
  1 - если процесс меню существует, то перезапустить; если процесс не существует, то запустить.
  2 - если процесс меню существует, то завершить.
  3 - если процесс меню существует, то перезапустить; если процесс не существует, то не запускать.
  

Примечания:

• Для создания пользовательского меню в новом или существующем файле .tcg в именной секции прописываются пункты и подменю. Если секция создаётся в новом файле .tcg, то для подключения необходимо прописать его в ключ TCG в секции [Setting] в TCIMG.ini или TCIMGU.ini

• Каждое подменю начинается с команды POPUP, за ней через пробел следует имя подменю.
Пример записи:

POPUP Буфер обмена


• Пункт меню определяется следующим образом: После команды MENUITEM через пробел следует текст пункта меню, далее через заданный разделитель в ключе Delimeters следует(ют) команда(ы) утилиты.
• Для установки "серого" некликабельного пункта используется GREYITEM
Пример записи:

MENUITEM Перевести во "все строчные"#@#bufsr=??1
GREYITEM Серый пункт меню


• Командой SEPARATOR можно добавить горизонтальную линию-разделитель.
• Каждое всплывающее меню (POPUP) заканчивается командой END_POPUP.
Пример записи:

POPUP Буфер обмена
  MENUITEM Перевести во "все строчные"#@#bufsr=??1
  MENUITEM Перевести во "ВСЕ ЗАГЛАВНЫЕ"#@#bufsr=??2
    SEPARATOR
  MENUITEM Перевести "Как в предложении"#@#bufsr=??3
  MENUITEM Перевести "Начало Слов С Заглавной"#@#bufsr=??4
  MENUITEM Инверсия регистра символов#@#bufsr=??5
END_POPUP


• Для установки значка пункту или заголовку подменю необходимо через разделитель прописать относительный или абсолютный путь к значку или путь к библиотеке со значками и номер значка через запятую:
Пример записи:

POPUP Буфер обмена#@#%COMMANDER_PATH%\Wcmicons.dll,5
  MENUITEM Перевести во "все строчные"#@#bufsr=??1#@#D:\TC IMAGE\Icons.ico
  MENUITEM Перевести во "ВСЕ ЗАГЛАВНЫЕ"#@#bufsr=??2#@#%WINDIR%\System32\shell32.dll,131
END_POPUP


• Для установки цветного квадратного значка пункту или заголовку подменю необходимо через разделитель прописать RGB цвет:
Пример записи:

POPUP Буфер обмена#@#FFEBCD
  MENUITEM Перевести во "все строчные"#@#bufsr=??1#@#FF0000
  MENUITEM Перевести во "ВСЕ ЗАГЛАВНЫЕ"#@#bufsr=??2#@#0000FF
END_POPUP

• Для сокращения могут использоваться первые буквы 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 - не отводит место слева от пункта для галочки/значка.
Пример записи:

[tray_Menu_Example]
Delimeters=#@#
TrayIcon=%COMMANDER_PATH%\Wcmicons.dll,40
TrayHint=Пример меню запуска команд TCIMG
TrayClick=9
Color1=F0FFF0
Color2=AFEEEE

POPUP Информация
  MENUITEM Отображение информации процессов#@#infos=2||1#@#%COMMANDER_PATH%\Wcmicons.dll,4
  MENUITEM Отображение информации об окнах#@#infos=2||2#@#%TCIMG_PATH%\Wcmicons.dll,4
END_POPUP



• Ключи для контекстного меню:
  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 - не отводит место слева от пункта для галочки/значка.
  При создании контекстного меню значок в трее не создаётся.
Пример записи:

[hotkey_Menu_Example]
Delimeters=#@#
Number=1
HotKey=+{SPACE}
Color1=F0FFF0
Color2=AFEEEE

MENUITEM Вставить фразу#@#;;вставка фразы с записью в буфер обмена
MENUITEM Вставить фразу#@#::вставка фразы без записи в буфер обмена
POPUP Информация
  MENUITEM Отображение информации процессов#@#infos=2||1#@#%COMMANDER_PATH%\Wcmicons.dll,4
  MENUITEM Отображение информации об окнах#@#infos=2||2#@#%TCIMG_PATH%\Wcmicons.dll,4
END_POPUP


Если командная строка начинается с ;; то последующая строка будет вставлена в активное приложение с записью в буфер обмена.
Если командная строка начинается с :: то последующая строка будет вставлена в активное приложение без записи в буфер обмена.
Дополнительные символы, которые можно использовать в строке: "@CR" - Символ возврата каретки, Chr(13), "@LF" - Символ перевода строки, Chr(10), "@CRLF" = @CR & @LF, "@TAB" - Символ Tab, Chr(9)

• Команды для меню:
  Если в командах используются параметры Total Commander (%p, %t, %WL ... см. Дополнение №7), то они будут запущены через UserCmd.ini, при этом в относительных путях необходимо удваивать знак процента (%%WINDIR%%).
  Если в командах не используются параметры Total Commander, то они будут запущены напрямую через TCIMG.

Может выглядеть следующим образом:



• Количество меню:
  Может быть запущено несколько экземпляров меню, но с разными настройками.
  Вторичный запуск меню с настройками одной и той же секции игнорируется.
  Для запуска команды вместе с запуском Total Commander см. Дополнение №4.

Дополнительные возможности:

• Модуль "Слежение за буфером обмена":
  В любом месте меню, где встретится тег $CLIP$ будет создано меню, пунктами которых будут фразы записанные в буфер обмена.
  Имена и содержимое пунктов заполняется сверху вниз, в зависимости от изменения текстового буфера обмена.
  Ключи определяющие вид модуля:
    → Clip - определяет количество пунктов.
    → ClipLen - определяет максимальное число символов названия пунктов.
    → ClipIconMenu - устанавливает значок для заголовка подменю "Слежение за буфером".
    → ClipIconItem1 - устанавливает значок для "пустых" пунктов.
    → ClipIconItem2 - устанавливает значок для "не пустых" пунктов.
    → ClipColor - устанавливает RGB цвет для подменю "Слежение за буфером".
Пример записи:

Clip=20
ClipLen=20
ClipIconMenu=%TCIMG_PATH%\TCIMG.dll,10
ClipIconItem1=%TCIMG_PATH%\TCIMG.dll,6
ClipIconItem2=%TCIMG_PATH%\TCIMG.dll,5
ClipColor=E6E6FA



  При нажатии на "не пустом" пункте содержимое будет записано в буфер обмена.
  Для контекстного меню, которое вызывается горячими клавишами есть дополнительные возможности при нажатии на пункте:
    → При зажатии клавиши SHIFT содержимое пункта вставляется в активный элемент окна.
    → При зажатии клавиши CTRL содержимое пункта записывается в буфер обмена + вставляется в активный элемент окна.
    → При нажатии на пункте правой кнопкой мыши содержимое пункта вставляется в активный элемент окна.

  !!! Модуль игнорирует буфер обмена при вызове утилиты, в параметрах которой есть команда clpclr

• Дополнительные пункты:
  Дополнительные обязательные пункты: "Перезапуск", "О программе", "Выход" прописываются в конце меню через разделитель.
  Ключи определяющие вид пунктов:
    → ItemPlus - 0 - пункты создаются в корневом уровне. 1 - пункты создаются в подменю "Дополнительно", путь позволяет установить значок для подменю.
    → Color3 - устанавливает RGB цвет для подменю.
    → ItemProgam - 0 - устанавливать значок, 1 - не устанавливать для пункта "О программе".
    → IconRestart - устанавливает значок для пункта "Перезапуск".
    → IconExit - устанавливает значок для пункта "Выход".

• Отдельный цвет для каждого подменю:
  Для установки разного цвета для каждого подменю в 3-м параметре POPUP через разделитель (после значка) прописывается RGB цвет:
Пример записи:

POPUP Буфер обмена#@#%TCIMG_PATH%\TCIMG.dll,13#@#FFEBCD
  ...
  POPUP Буфер обмена#@#%TCIMG_PATH%\TCIMG.dll,10#@#F0FFFF
    ...
  END_POPUP
END_POPUP


• Перенос подменю и пунктов в отдельные колонки:
  Для переноса пунктов или подменю в 4-м параметре POPUP или MENUITEM через разделитель прописывается тег $BREAK$
Пример записи:

POPUP Буфер обмена#@#%TCIMG_PATH%\TCIMG.dll,13#@#FFEBCD#@#$BREAK$
  MENUITEM Перевести во "все строчные"#@#bufsr=??1#@#FF0000#@#$BREAK$
  ...


Нажмите для отображения изображения в оригинальном размере.


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

;; Break - при использовании $BREAK$ ; 1 - колонки отделяются вертикальной линией, 0 - без вертикальной линии
Break=1


• Запись информации о запущенном процессе:
  При запуске в TCIMG.ini в секцию [ZMenu] в ключ TrayPID записывается PID запущенного процесса меню в трее
  При запуске контекстного меню информация записывается в ключи:
    N_PID - записывается PID процесса меню
    N_HGUI - записывается хендл окна, которому принадлежит меню
    N_TITLE - записывается заголовок окна, которому принадлежит меню
    N_HMENU - записывается хендл меню
  Где N_... - номер запущенного меню
  Информацию ключей можно использовать в дальнейшей автоматизации.

  Контекстное меню можно вызывать не только по нажатию горячих клавиш, но и через ярлык или кнопку, создав с помощью команды keybd необходимый вызов:
Пример кнопки:

TOTALCMD#BAR#DATA
%COMMANDER_PATH%\TCIMG.exe
keybd=0~~+{TAB}
%COMMANDER_PATH%\TCIMG.exe
Вызов контекстного меню - горячие клавиши SHIFT + TAB


  В версии 8.9 появилась возможность вызывать контекстное меню с помощью команды zmenz, не задействуя горячие клавиши

• Модуль "Избранное".
  В версии 8.2 появилась возможность добавлять и удалять пункты из избранного во время работы утилиты:
    → Для появления меню необходимо вставить в корневой уровень меню пункты:
Пример записи:

POPUPF Избранное
END_POPUPF

    → Название может быть любым, его же необходимо прописать в ключе FavouritesName
  Ключи определяющие вид пунктов:
    → FavouritesName - имя модуля "Избранное"
    → FavouritesLenItem - максимальная длина текста пунктов в модуля "Избранное"
    → FavouritesInsert - 1 - вставлять пункты в начало списка, 2 - вставлять в конец списка
    → FavouritesIconItem1 - устанавливает иконку для модуля "Избранное"
    → FavouritesIconItem2 - устанавливает иконку для пунктов модуля"Избранное"
    → FavouritesColor - устанавливает RGB цвет модуля "Избранное"
Пример записи:

FavouritesName=Избранное
FavouritesLenItem=20
FavouritesInsert=2
FavouritesIconItem1=%TCIMG_PATH%\TCIMG.dll,35
FavouritesIconItem2=%TCIMG_PATH%\TCIMG.dll,34
FavouritesColor=E6E6FA


  • Для добавления пунктов в меню должен быть Модуль "Слежение за буфером обмена" (тег $CLIP$)
  • Чтобы добавить пункт необходимо, удерживая ПРОБЕЛ, нажать на не пустой строке пункта модуля "Слежение за буфером обмена" левой кнопкой мыши.
  • При этом из строки буфера обмена будет создан пункт в модуле "Избранное"
  • Этим пунктом (строкой) можно пользоваться на постоянной основе.
  • Строка преобразовывается и автоматически записывается в файл меню.
  • Так же созданные пункты можно "вручную" перенести в другой раздел и "избранное" будет создаваться заново.
  • Для удаления из модуля "Избранное" необходимо, удерживая ПРОБЕЛ, нажать на пункте левой кнопкой мыши.
  • При этом пункт удаляется из файла меню.

  • При добавление/удалении меню автоматически перезапускается (при этом модуль "Слежение за буфером" очищается)
  • Тег $CLIP$ должен находится в любом месте ВНЕ модуля "Избранное"

См. также:

anf2d, arr2d, asave, carry, cmd64, cmdcm, cname, cycles, dilog, dubls, envgt, global, hotkiy, ifthen, inbox, listx, macro, noglob, pause, pressy, presww, renew, scrpt, sends, slects, slist, swcmd, swcths, tempxx, tempz, timess, xopen, 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_Info zmenz=3||2 ;; меню с различной информацией

zmenu=hotkey_Menu_Line_Example zmenz=2||2 ;; запустить меню, вызвать и закрыть процесс

zmenu=hotkey_Symbols zmenz=4||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