Кнопка,работающая с учетом нажатых клавиш
Select messages from
# through # FAQ
[/[Print]\]

Total Commander -> Автоматизация Total Commander

#1: Кнопка,работающая с учетом нажатых клавиш Author: Monarch-LFV PostPosted: Wed Jun 23, 2021 15:36
    —
Может быть уже была такая же тема (даже не может быть, а скорее всего): как сделать кнопку на панели, функции которой будут различными в зависимости от зажатых на клавиатуре клавиш. То есть, например, обычное нажатие на кнопку - выполняется одна команда, а с зажатым Shift’ом - другая. Если где-то уже обсуждалось прошу навести, так не смог найти.

#2:  Author: AvadaLocation: Россия, Саратов PostPosted: Wed Jun 23, 2021 17:40
    —
Monarch-LFV
Нормальными способами никак не сделать. Из, скажем так, менее нормальных, известно, например, вот это. Я не пользовался и не собираюсь, так что — всяческих успехов в самостоятельном изучении, а с моей стороны больше никаких комментариев.

#3:  Author: LonerDLocation: Донецк PostPosted: Wed Jun 23, 2021 18:28
    —
Помимо вышеупомянутого скрипта ButtonBar eXtended, ещё в TCFS2 есть такой функционал.

#4:  Author: Monarch-LFV PostPosted: Thu Jun 24, 2021 06:55
    —
Avada
Спасибо за наводку, попробовал ее - не совсем то, что нужно, да и не работает с вертикальной панелью (в 2011 году ее еще не было).
LonerD
А вот про TCFS2 интересно, можно поподробнее, как сделать такую кнопку? Мануал не короткий, да и ветка содержит 128 страниц, искать нужное сложно.

#5: Re: Кнопка на панели с разными параметрами Author: ВахмуркаLocation: Большая деревня Москва PostPosted: Thu Jun 24, 2021 07:41
    —
2Monarch-LFV
https://disk.yandex.ru/d/RKtNypXSTndKXQ

#6:  Author: Monarch-LFV PostPosted: Thu Jun 24, 2021 08:31
    —
Вахмурка
О! То что нужно, спасибо!
Единственное, нужно заморочиться с созданием пользовательских команд, коих у меня будет немало.
Просто пользую консольную утилиту CPDF, для нее наделал много батников и, соответственно, кнопок с разным функционалом, но для каждой еще хотелось бы иметь вариации, типа:
1. Выходные файлы будут заменять исходные - просто нажатие
2. Выходные файлы записываются в отдельную папку - нажатие c CTRL
3. Выходные файлы записываются в ту же директорию, где исходные, но с добавлением суффикса в имени файла - нажатие с SHIFT
И еще нюанс, если в батнике прописать запрос на ввод данных, то при нажатии с CTRL или ALT или SHIFT - теряется фокус окна консоли (немного раздражает), поэтому надо придумывать батники без ввода - как всегда, костыли. Rolling Eyes

#7:  Author: ВахмуркаLocation: Большая деревня Москва PostPosted: Thu Jun 24, 2021 09:06
    —
2Админ(ы)
Данную утилиту я нашел убей не помню на каком ресурсе, но сейчас найти не смог нигде (даже на totalcmd.net), кроме как у себя на диске. Почему бы не выложить ее на сайте?

#8:  Author: LonerDLocation: Донецк PostPosted: Sat Jun 26, 2021 01:39
    —
Monarch-LFV wrote:
А вот про TCFS2 интересно, можно поподробнее, как сделать такую кнопку?

Например, вот так оформляется выполнение двух em-команд, одна при простом нажатии левой кнопкой мыши, вторая - при одновременном зажатии ПКМ, СКМ, Ctrl или Shift.
Code:
[em_myCommand]
cmd=%commander_path%\Plugins\exe\TCFS2\TCFS2.exe /ef "tem(em_myCommand1), test(pressedCtrl || pressedShift || pressedMButton || pressedRButton) | tcm(em_myCommand2)"

В файле TCFS2.Core.ini можно дописать варианты с разными клавишами клавиатуры.

#9:  Author: AvadaLocation: Россия, Саратов PostPosted: Sat Jun 26, 2021 05:45
    —
Обсуждается привлечение сторонних средств автоматизации, явно выходящие за рамки стандартного поведения. (К стандарту относится только поведение кнопки, выполняющей с разными клавишами команду cm_Pack, но об этом предостаточно сказано в других местах.) В "Общих вопросах" теме делать нечего, она переносится в "Автоматизацию". Заголовок вместо прежнего "Кнопка на панели с разными параметрами" сделан более вразумительным.

#10:  Author: CaptainFlintLocation: Москва PostPosted: Wed Jul 07, 2021 03:23
    —
Вахмурка wrote:
2Админ(ы)
Данную утилиту я нашел убей не помню на каком ресурсе, но сейчас найти не смог нигде (даже на totalcmd.net), кроме как у себя на диске. Почему бы не выложить ее на сайте?

В свойствах файла упомянут Zmy; подозреваю, что утилита написана этим участником. Он регулярно выкладывает тут всякие мелкие программки на мэйлрушное облако, с которого потом всё удаляет; скорее всего, это одна из них. Лучше обратиться к нему (правда, не помню, есть ли у него аккаунт на сайте; но если нету, можно завести).

#11:  Author: HEXFIXLocation: Калининград PostPosted: Fri Jul 30, 2021 19:30
    —
LonerD wrote:

Например, вот так оформляется выполнение двух em-команд, одна при простом нажатии левой кнопкой мыши, вторая - при одновременном зажатии ПКМ, СКМ, Ctrl или Shift.
Code:
[em_myCommand]
cmd=%commander_path%\Plugins\exe\TCFS2\TCFS2.exe /ef "tem(em_myCommand1), test(pressedCtrl || pressedShift || pressedMButton || pressedRButton) | tcm(em_myCommand2)"

В файле TCFS2.Core.ini можно дописать варианты с разными клавишами клавиатуры.


А возможна сцепка из трёх команд? Например, ЛКМ — выделить всё, Ctrl+ЛКМ — снять выделение, Shift+ЛКМ — восстановить выделение?

#12:  Author: MVVLocation: Ростов-Дон PostPosted: Thu Aug 05, 2021 12:12
    —
Да, возможна. Там можно указать произвольную последовательность действий, для некоторых из которых с помощью функции if() можно писать произвольные условия, а если просто один параметр какой-то функции в зависимости от условия, можно просто тернарным оператором воспользоваться. Вот три варианта сделать это (первый позволяет произвольные действия выполнять в каждом случае, второй и третий - только CM-команды):
Code:
; Зажат Ctrl - вызывается cm_ClearAll, а если Shift - cm_RestoreSelection, иначе - cm_SelectAll
TCFS2 /ef "if(pressedCtrl, tcm(524), if(pressedShift, tcm(529), tcm(523)))"
TCFS2 /ef "tcm(if(pressedCtrl, 524, if(pressedShift, 529, 523)))"
TCFS2 /ef "tcm(pressedCtrl ? 524 : (pressedShift ? 529 : 523))"

#13:  Author: sa PostPosted: Fri Aug 06, 2021 09:42
    —
Пример кнопки с TCFS2 + TCFS2Tools или вот ещё:
Code:
TOTALCMD#BAR#DATA
%COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe /ef "if(pressedAlt, varset(1,1), varset(1,0)) tcm(524) tcm(517,1) eval(settext_wait(`Поиск файлов в каталоге под курсором`,findwnd(`TFindFile`))) if(varget(1)==0,sendmsg(findwnd(`TButton`,,findwnd(`TFindFile`),2),$F5))"

WCMICONS.DLL,47
Поиск файлов в каталоге под курсором |(без Alt - сразу после открытия диалога начать поиск)
Если при клике на кнопку не нажата клавиша Alt, то поиск в каталоге под курсором начнётся сразу (с текущими настройками). Для изменения настроек поиска в диалоге требуется дополнительное нажатие Alt.
P.S.
Случайно заметил, что команда "Поиск файлов в каталоге под курсором" (cm_SearchForInCurdir, а точнее её числовой индекс 517) работает и в старых версиях TC (даже в 4.03 - более древней под руками не оказалось). Тогда как упоминание о добавлении команды появилось лишь в версии 9.02 beta (15.06.16).



Total Commander -> Автоматизация Total Commander


output generated using printer-friendly topic mod. All times are GMT + 4 Hours

Page 1 of 1

Powered by phpBB © 2001, 2005 phpBB Group