Autorun

Обсуждение только плагинов и утилит для Total Commander.

Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер

Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

У, как всё плохо. Судя по тому, что не отрабатываются команды - похоже как будто сам Autorun не обновлен.

Скопипастил код. Первые 4 команды работают.

5,6 - ты забыл 0 - идентификатор контрола. Но сумма зон /H похоже в какой-то момент отвалилась, по отдельности работает.
ControlSetMouseAction /R /H:62 /K:A 0 SendCommand 321

7,8 - тоже 0 нет, /H:0 - такого варианта не предусмотрено, см. справку. Проверить не могу.

Версия с исправленным суммированием зон.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Autorun обновляется всё время вручную с предварительным переименованием текущей версии, поэтому с этим проблем нет никогда.
Насчёт 0, каюсь, сглупил. ПКМ на заголовке заработал в пофиксенном плаге. Для /X1|2 только команда стала выполнятся. Всё остальное в силе.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

Flasher
Протестировал на семерке, всё очень странно. Функция хука не получает WM_MOUSEWHEEL под семеркой вообще, под десяткой всё работает. Поискал информацию по этому вопросу, но в контексте семерки никто на такую проблему не жаловался, так что я склонен думать, что это ТС под семеркой как-то перехватывает колесо.

В общем, если не появится понимания причины проблемы, придется, наверно, для семерки городить отдельную ветку кода под колесо, чего бы весьма не хотелось.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Loopback
А, значит, ты всё-таки подтверждаешь проблему. Уже выдохнул.
Можно предварительно у Гислера спросить, перехватывает ли TC колесо.
Но, по крайней мере касаемо хоткеев, сам он отрицательно отзывался в отношении перехватов. При обсуждении этой проблемы он это ясно дал понять.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

Flasher
Не вижу ничего удивительного, что он против :) Думаю, не стоит его провоцировать, сделаю обходной вариант для семерки. С некоторыми ограничениями - своя команда не сможет предотвратить выполнение дефолтного действия колеса (если такое есть).
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Loopback
К файловым спискам цеплять команды ещё и по прокрутке с модификатором нужды точно нет, поэтому не страшно. Делай так.
А с /X1|2 только глобальный хук поможет, видимо, иначе, как я уже писал, смысл отсутствует.
Loopback писал(а):либо просто поиск по тексту.
А почему бы не заменить на поиск пробела или табуляции с конца взамен начала? Внешне же это будет практически неразличимо.

[cut="А пока некоторые наброски для справочных примеров (маркер проблемности справа описаний):"]

Код: Выделить всё

# XButton[1/2] всюду = переход по истории каталогов с пропуском FTP: —
ControlSetMouseAction /X1 0 SendCommand 574
ControlSetMouseAction /X2 0 SendCommand 573
# Скроллинг на вкладках акт. панели = перенос активной вкладки влево/вправо: —
ControlSetMouseAction /W:F 10017 SendCommand 3015
ControlSetMouseAction /W:R 10017 SendCommand 3016
# Alt+скроллинг на вкладках акт. панели = переход к пред./след. вкладке: —
ControlSetMouseAction /W:F /K:A 10017 SendCommand 3005
ControlSetMouseAction /W:R /K:A 10017 SendCommand 3006
# Atl+ПКМ по вкладкам активной панели = заблокировать/разблокировать вкладку:
ControlSetMouseAction /R /K:A 10017 SendCommand 3012
# Alt+ЛКМ по вкладкам = сохранение вкладок в заданный файл в соотв. панели:
ControlSetMouseAction /L /K:A 26 CommandExec em_SaveTabsL
ControlSetMouseAction /L /K:A 27 CommandExec em_SaveTabsR
# Shift+ЛКМ по вкладкам = переключение на первую вкладку в соотв. панели:
ControlSetMouseAction /L /K:S 26 SendCommand 5201
ControlSetMouseAction /L /K:S 27 SendCommand 5301
# Ctrl+ПКМ по файловой панели = отключение сортировки в соотв. панели:
ControlSetMouseAction /R /K:C 1 SendCommand 125
ControlSetMouseAction /R /K:C 2 SendCommand 225
# Alt+ПКМ по файловой панели = обратная сортировка в соотв. панели:
ControlSetMouseAction /R /K:A 1 SendCommand 130
ControlSetMouseAction /R /K:A 2 SendCommand 230
# Alt+ПКМ по "активной" панели дисков = открытие 'Мой компьютер':
ControlSetMouseAction /R /K:A 10015 SendCommand 2122
# ПКМ по панели дискового места = открытие 'Рабочий стол' в соотв. панели:
ControlSetMouseAction /R /C:TMyPanel 2 CommandExec /CD ::
ControlSetMouseAction /R /C:TMyPanel 1 CommandExec /CD "" ::
# Alt+ЛКМ по разделителю панелей = установка равных размеров панелей:
ControlSetMouseAction /L /K:A 23 SendCommand 909
# Alt+СКМ всюду = переключение между главным меню и полным окном TC: +/-
ControlSetMouseAction /M:U /K:A 0 CommandExec em_SwitchWindow&MainMenu
# Shift+СКМ всюду = переключение на главную панель инструментов,
# где em_Bar состоит из OPENBAR1 и %A в полях Команда: и Параметры:, соотв.:
ControlSetMouseAction /M:U /K:S 0 CommandExec em_Bar Default.bar
# СКМ по заголовку окна и упр. элементам = отображение доп. информации в заголовке:
ControlSetMouseAction /M:U /H:62 0 CommandExec em_AddTitleInfo
# ПКМ по главному меню = обновление текущей локализации:
#ControlSetMouseAction /R /H:64 0 CommandExec em_CurrentLang
# Alt+ПКМ по главному меню = переключение между русским и английским языками:
ControlSetMouseAction /R /K:A /H:64 0 CommandExec em_SwitchEng&RusLanguage
[/cut]
Пару старых мыслей.
1. Ты мог бы сделать поддержку команд ТС с параметрами для CommandExec/SendCommand? Вероятно, это запрашивали, уже не помню.
2. Для TwinKey был запрос на установку языка ввода для указанных папок. Автор так и не родил. По хорошему это, конечно, Гислеру надо в стилях оформления делать, но пока дальше ключа KeyboardID у него за зашло. Возьмёшься?
Последний раз редактировалось Flasher Пн апр 06, 2020 08:45, всего редактировалось 3 раза.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

Flasher писал(а):А почему бы не заменить на поиск пробела или табуляции с конца взамен начала? Внешне же это будет практически неразличимо.
Да, вполне можно и пробелы/табы с конца. Вроде каких-то минусов такого подхода я не вижу.
Flasher писал(а):А пока некоторые наброски
Маркер "-" я так понимаю, "не работает". Сейчас не могу, посмотрю позже (кроме X1/X2), но не факт, что получится что-то сделать сверх уже имеющегося.
Flasher писал(а):1. Ты мог бы сделать поддержку команд ТС с параметрами для CommandExec/SendCommand? Вероятно, это запрашивали, уже не помню.
Имеется в виду OPENTABS и прочие или последние нововведения типа cm_RereadSource?
Flasher писал(а):2. Для TwinKey был запрос на установку языка ввода для указанных папок. Автор так и не родил. По хорошему это, конечно, Гислеру надо в стилях оформления делать, но пока дальше ключа KeyboardID у него за зашло. Возьмёшься?
Не знаю, о чем речь (задание раскладки клавиатуры в зависимости от каталога?), но сомневаюсь. Вряд ли я сейчас смогу вкладывать силы и время в то, что мне лично никогда не пригодится. Лучше даже обещать не буду, а то получится как с cpuid :)
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Loopback писал(а):Маркер "-" я так понимаю, "не работает".
В 4-х случаях. А там, где +/-, работает в сравнении с другими способами вызова юзеркоманды с некоторыми перебоями, иногда выполняя команду дважды. Добавка :U, немного помогла, но не до конца. Скорее это связано с тугостью нажатия колеса, дающее повторные клики из-за передерживания. Может, после нажатия/отпускания можно какую-то задержку для неповторения клика предусмотреть?
И как тебе в целом мой наборчик? Успел что-то юзабильное для себя выделить? :)
Loopback писал(а):Имеется в виду OPENTABS и прочие или последние нововведения типа cm_RereadSource?
Те, что перечислены в блоке "Команды с параметрами". И CommandExec я не просто так отметил, т. к. параметризация там точно доступна (функция tem у TCFS2 как пример, у самой команды — /CD), т. е. на базе созданных юзеркоманд с %A в параметрах получаем некий аналог.
Loopback писал(а):что мне лично никогда не пригодится.
Т. е. ты хочешь сказать, что у тебя все каталоги, куда ты в течении суток заглядываешь, имеют строго доминирующий язык в именах содержимого? :shock: До ввода в эксплуатацию скрипта у меня ситуация была такова, что смена языка ввода являлась одной из 3-4 самых часто востребованных операций после быстрого фильтра и стрелочной/путевой навигации. Наверное, стоит в одном ряду с переименованием файла. Поэтому для меня это куда значимей, чем cpuid и похожие плюшки. И уж точно это не частный случай, а вполне распространённое явление. Но ладно бы ситуация касалась только простых каталогов, но у нас эта разноязычность значится в том числе в виртуальных папках, где преобладает язык локали, и папках системных плагинов. Примеры далее.
Предлагаю выделить список сопоставления в отдельный файл с подобным содержимым:

Код: Выделить всё

С:\Коллекция\*|rus
%ProgramFiles%\*|eng
%COMMANDER_PATH%\*|$0409
D:\Best Wallpapers\|1033
E:\мои фото\*|$0419
\\Сеть\|1049
\\\Startups\|eng
\\\Services2\|system
\\Библиотеки\|rus
\\Приступая к работе\|system
\\Программы и компоненты\|eng
E:\мои фото\*|$0419
И, задав сепаратором "|", sql-запросом обращаться к нужному языкового маркеру (варианты привёл на выбор). system будет подставлять язык системной локали. Наличие * будет определять поиск по левой части в пути, чтобы смена производилась и далее по глубине как в нижнем приёме со стилями.
P.S.: И ладно ты. Удивительно, как швейцарец, которому по долгу приходится работать как минимум с 4 языками, этой пользы не находит. Изображение
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

Версия Tweaks с исправленной работой колеса на Win7.
Flasher писал(а):И как тебе в целом мой наборчик? Успел что-то юзабильное для себя выделить?
Прокрутку колесом вкладок оставлю. Возможно блокировку вкладки. Установка равных размеров панелей - вот это точно да. Но как я уже писал, меня больше интересует использование дополнительных меню.
Flasher писал(а):Те, что перечислены в блоке "Команды с параметрами". И CommandExec я не просто так отметил, т. к. параметризация там точно доступна (функция tem у TCFS2 как пример, у самой команды — /CD), т. е. на базе созданных юзеркоманд с %A в параметрах получаем некий аналог.
Ладно, ближе к делу посмотрим.
Flasher писал(а):Т. е. ты хочешь сказать, что у тебя все каталоги, куда ты в течении суток заглядываешь, имеют строго доминирующий язык в именах содержимого?
Так точно, 99% латиница. Виртуальные каталоги не использую, пожалуй, только "Шрифты" имеет некоторое практическое применение. У всех свои сценарии работы.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Loopback писал(а):Версия Tweaks с исправленной работой колеса на Win7.
Увы, с обновкой ситуация не изменилась. :(
Остальное, я так понимаю, ещё не правил.

Кстати, блокировка пунктов у меня не заработала и на исходном меню без иконок:

Код: Выделить всё

LoadLibrary Plugins\Autorun_Tweaks.dll
DisableMarkedMenuItems "`"
Loopback писал(а):Прокрутку колесом вкладок оставлю. Возможно блокировку вкладки. Установка равных размеров панелей - вот это точно да.
Скромно, но тоже недурно. Помимо этих для себя я вижу большую пользу в обратной сортировке, открытии "Мой компьютер" для доп. устройств, переключением между гл. меню и текущим видом окна. Но особенно я прочувствовал переключение между языками. Для быстрых тестов это вообще песня. )
Loopback писал(а):меня больше интересует использование дополнительных меню.
А ты предусмотрел отсутствие выделения и автофокус на файле под указателем? Для этого ведь скрипт или утилита требуется, т. к. твой плагин жимоклики не производит, хотя мог бы, особенно для безкомандных случаев.
Loopback писал(а):Ладно, ближе к делу посмотрим.
ОК.
Loopback писал(а):У всех свои сценарии работы.
Не спорю. Но, к примеру, при русской локали в сис. плагинах служб ты получишь русский язык, и придётся переключать. В общем, ты подумай, т. к. вещь реально нужная, т. е. совсем не на авось.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

Flasher писал(а):Увы, с обновкой ситуация не изменилась.
Печально. У меня работает на Win7 х64, 32-битную все никак не соберусь поставить.
Единственное что могу предположить, может у тебя система выдает значение версии, отличное от заданного сейчас 6.1, при котором включается дополнительная ветка кода, хотя это и крайне сомнительно. Попробуй эту версию, если фикс включается, при запуске должно появиться сообщение с версией системы.
Flasher писал(а):Кстати, блокировка пунктов у меня не заработала и на исходном меню без иконок:
Аналогично сказанному выше.
Flasher писал(а):Помимо этих для себя я вижу большую пользу в обратной сортировке, открытии "Мой компьютер" для доп. устройств, переключением между гл. меню и текущим видом окна.
Для сортировки имхо ничуть не сложнее ткнуть в заголовок, хотя если меняешь ее по сто раз на дню - может быть. Мой компьютер еще мог бы быть полезен в ТС до 9.50, сейчас же, когда устройства появляются в списке дисков, я его у себя даже из меню уберу. Третье - это твой сценарий работы, не использую.
Flasher писал(а):А ты предусмотрел отсутствие выделения и автофокус на файле под указателем? Для этого ведь скрипт или утилита требуется, т. к. твой плагин жимоклики не производит, хотя мог бы, особенно для безкомандных случаев.
Пока никаких неудобств от отсутствия или наличия перечисленного не испытывал. Но с другой стороны толком было некогда этим заниматься, пока только блокирую дефолтные действия и пытаюсь понять, почему колесо не работает на неподдерживаемой системе 11-летней давности :wink:
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Loopback писал(а):32-битную все никак не соберусь поставить.
Что-то мне давно подсказывает, что закавыка именно в этом.
Loopback писал(а):может у тебя система выдает значение версии, отличное от заданного сейчас 6.1
Нет, конечно. Это командой ver легко проверяется: Microsoft Windows [Version 6.1.7601].
Loopback писал(а):при запуске должно появиться сообщение с версией системы.
Версии продукта нет. Только это: Win7 Fix Enabled.
Loopback писал(а):Для сортировки имхо ничуть не сложнее ткнуть в заголовок
Ничего подобного. До заголовка ещё дотянуться надо и сфокусировать указатель. Это куда медленнее предлагаемого.
Loopback писал(а):сейчас же, когда устройства появляются в списке дисков, я его у себя даже из меню уберу.
Мне это бывает нужно для просмотра скрытых ключом HideRemovableNoMedia дисков.
Loopback писал(а):Третье - это твой сценарий работы, не использую.
Я догадываюсь. :) Это типа WinRoll, когда нужно временно свернуть ТС в одну полоску. Но вот четвёртое на твоём месте я бы заценил. И то и другое на TCFS2 делается. Я там ПКМ в итоге поставил. ) А на Alt+ПКМ повесил простое обновление по OPENLANGUAGEFILE/%A. Только почему-то у меня не получается завести его через ShellExec. Что я делаю не так?

Код: Выделить всё

IniRead /R LNG %COMMANDER_INI% Configuration LanguageIni WCMD_ENG.LNG
ControlSetMouseAction /R /K:A /H:64 0 ShellExec '%COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe' '/ef "tem(`em_Lang %LNG%`)"'
Loopback писал(а):Пока никаких неудобств от отсутствия или наличия перечисленного не испытывал.
Ты меню не для выбранного, где клик должен соответствовать координатам указателя в файловых панелях, используешь? А для чего тогда? Сторонних вызовов?
Loopback писал(а):на неподдерживаемой системе 11-летней давности
Да хоть 100-летней. ;) Не спешу баловаться обновками, когда они приносят не столько ощутимой пользы, сколько вреда.
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

Flasher писал(а):Что-то мне давно подсказывает, что закавыка именно в этом.
Да, под 32-битной оказался еще один сюрприз в виде неправильного хэндла, приходящего с сообщением колеса.

Попробуй эту версию, вроде исправил.

Также поменял работу DisableMarkedMenuItems, теперь задается маркер, находящийся в конце пункта меню (например, два пробела). Маркер не удаляется.
Flasher писал(а):Только почему-то у меня не получается завести его через ShellExec. Что я делаю не так?
Не знаю, если в скрипте ShellExec работает, то ничего не мешает ему работать и здесь.
Flasher писал(а):Ты меню не для выбранного, где клик должен соответствовать координатам указателя в файловых панелях, используешь? А для чего тогда? Сторонних вызовов?
Пока ни для чего, мне еще некогда заняться прикручиванием к своей сборке. Скорее для второго.
Flasher писал(а):Не спешу баловаться обновками, когда они приносят не столько ощутимой пользы, сколько вреда.
Не спешить можно было, когда оно еще обновлялось... Ну это личное дело каждого.
У меня на основном компьютере семерка продержалась дольше всего, до прошлой осени, на других десятка стояла с 16 года. Когда пришло время обновляться - возвращать семерку желания не возникло.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Loopback писал(а):Попробуй эту версию, вроде исправил.
Ну, наконец-таки, победил! :)
Только получается, ты неверно задал поведение к описанным ключам (а я ещё подумал, почему переделал в своём примере):
:F | То же самое, но по вращению вперед.
:R | То же самое, но по вращению назад.
Вперёд = вниз, назад = вверх. А у тебя наоборот сделано. Исправь, пож-та.
И для согласованности с F (Forward) я бы предпочёл B (Backward) вместо R (Reverse). Или U/D (Up/Down).
И что насчёт параллельной прокрутки в файловой панели? Её можно стопорить?

С DisableMarkedMenuItems ситуация не изменилась. Эти настройки могут влиять?
Loopback писал(а):Не знаю, если в скрипте ShellExec работает, то ничего не мешает ему работать и здесь.
Это я не смогу проверить, т. к. при перезапуске язык, что очевидно, и так обновляется без вмешательства autorun. А кнопка работает в таком виде:

Код: Выделить всё

%COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe /ef "tem(`em_Lang Wcmd_rus.lng`)"
Хотя стоп, почему не смогу? Смогу. Достаточно коцнуть название ключа, чтобы выбрался английский. И да, вижу, что отдельно команда срабатывает, а с Atl+ПКМ — нет. С CommandExec же работает. Что-то в парсере с обработкой параметров не чисто.

На вопрос про задержку так и не ответил.
И по панели диск. пространства что там? Насколько я понял, проблема в этом. Т. е. плагином это не вылечить?
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

Flasher писал(а):Вперёд = вниз, назад = вверх. А у тебя наоборот сделано. Исправь, пож-та.
И для согласованности с F (Forward) я бы предпочёл B (Backward) вместо R (Reverse). Или U/D (Up/Down).
Майкрософт считает иначе: "A positive value indicates that the wheel was rotated forward, away from the user; a negative value indicates that the wheel was rotated backward, toward the user."

По терминологии с Backward согласен.
Flasher писал(а):С DisableMarkedMenuItems ситуация не изменилась. Эти настройки могут влиять?
Нет. Я не знаю, что еще может не работать, тестировал везде - и везде работает.
Flasher писал(а):Что-то в парсере с обработкой параметров не чисто.
Команда, указанная в ControlSetMouseAction просто передается с сохранением параметров. Ок, проверю, что передается при такой команде.
Flasher писал(а):На вопрос про задержку так и не ответил.
Нет, чрезмерное усложнение при незначительном профите.
Flasher писал(а):И по панели диск. пространства что там? Насколько я понял, проблема в этом. Т. е. плагином это не вылечить?
Индекс 10007 и возвращает эту панель - leftinfo/rightinfo. А то, что у тебя обведено зеленым, не возвращает ни один из индексов 1-29, видимо, просто не реализовано.
Ответить