Фильтр отбора с пользовательским шаблоном

Обсуждение вопросов автоматизации Total Commander с помощью сторонних программ и скриптовых технологий.

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

Dave
Сообщения: 24
Зарегистрирован: Вс апр 26, 2009 15:19

Фильтр отбора с пользовательским шаблоном

Сообщение Dave »

Господа, очень удобно в процессе работы с Тоталом оказалось пользоваться возможностью "Фильтра отбора файлов" с пользовательским шаблоном "Файлы не старше 1 часа". Возможно ли создать пользовательскую команду на это действие (скрипт, bat-файл, или еще что-либо проще)? Хотелось бы в итоге прийти к действию с двумя пользовательскими хоткеями - задать данный фильтр, снять все фильтры(ну с этим то проблем нет). Может кто уже заморачивался подобным вопросом? Спасибо.
ЗЫ. Цветовое выделение "файлов не старше 1 часа" не предлагать, уже работает... но не спасает 8)
Worros
Сообщения: 1123
Зарегистрирован: Пт янв 19, 2007 18:46

Сообщение Worros »

Ctrl+F12 , шаблон и выбрать тот же шаблон, что использовался для расцветки. Или я чего то не понимаю?
Dave
Сообщения: 24
Зарегистрирован: Вс апр 26, 2009 15:19

Сообщение Dave »

Worros писал(а):Ctrl+F12 , шаблон и выбрать тот же шаблон, что использовался для расцветки. Или я чего то не понимаю?
Это то понятно, хочется максимально быстро в одно нажатие вынесенной на панель кнопки (или один хоткей), так же как работает вынесенная Гислером отдельная команда cm_SrcExecs (Фильтр отбора - программы)
Dave
Сообщения: 24
Зарегистрирован: Вс апр 26, 2009 15:19

Сообщение Dave »

Посмотрев примеры скриптов, написанные пользователем Batya и используя суперметод copy-paste :lol: вроде удалось сделать работающий скрипт

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

Set TCS = CreateObject("TCSCRIPT.Helper")
ShablonName = ">Не старше 1 часа"
TCS.SendCommand "cm_SrcUserDef"
TCS.SendKeystroke CStr(ShablonName)
TCS.SendKeystroke "{ENTER}"
Set TCS=Nothing
Wscript.Quit
Не уверен, что код 100% верен (я только сегодня с Helper-ом стал разбираться), но он работает.
Dave
Сообщения: 24
Зарегистрирован: Вс апр 26, 2009 15:19

Сообщение Dave »

Обнаружился неприятный глюк. Если текущая раскладка клавиатуры русская , то вместо строки ">Не старше 1 часа" посылается в скрипте строка ">ЮНе старше 1 часа". Т.е. символ ">" меняется на "Ю" и скрипт корректно не отрабатывает. Это как-нибудь лечится? Можно ли передать символ ">" как-нибудь кодом этого символа? Help..
Worros
Сообщения: 1123
Зарегистрирован: Пт янв 19, 2007 18:46

Сообщение Worros »

Если честно, скриптами не пользуюсь и совет свой не проверял, но я бы попробовал избавиться от shablonname и вписать напрямую TCS.SendKeystroke ">Не старше 1 часа" , тем более что в примерах от автора Script Helpera CStr не фигурирует, он там явно лишний.
Dave
Сообщения: 24
Зарегистрирован: Вс апр 26, 2009 15:19

Сообщение Dave »

Worros писал(а):Если честно, скриптами не пользуюсь и совет свой не проверял, но я бы попробовал избавиться от shablonname и вписать напрямую TCS.SendKeystroke ">Не старше 1 часа" , тем более что в примерах от автора Script Helpera CStr не фигурирует, он там явно лишний.
Нет, к сожалению этот вариант не помогает
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Для выхода из положения использовал вместо ShablonName TCS.SendKeystroke "{TAB}{END}{ENTER}", переименовав шаблон в "Файлы не старше 1 часа", благодаря чему он оказался у меня последним ({END}) в списке шаблонов. Нечестно, но работает.
Dave
Сообщения: 24
Зарегистрирован: Вс апр 26, 2009 15:19

Сообщение Dave »

sa писал(а):Для выхода из положения использовал вместо ShablonName TCS.SendKeystroke "{TAB}{END}{ENTER}", переименовав шаблон в "Файлы не старше 1 часа", благодаря чему он оказался у меня последним ({END}) в списке шаблонов. Нечестно, но работает.
Отлично! Немного усовершенствуем вашу идею

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

Set TCS = CreateObject("TCSCRIPT.Helper")
TCS.Pause = 0
TCS.SendCommand "cm_SrcUserDef"
TCS.SendKeystroke "{TAB}"  
TCS.SendKeystroke "Не старше 1 часа"
TCS.SendKeystroke "{ENTER}"
Set TCS=Nothing
Wscript.Quit
Работает. Можно сделать при желании еще кучу различных фильтров-скриптов, не забывая только то, что используем в названиях шаблонов исключительно русские символы, иначе будет косячить как с транслитом ">" в "Ю" [/quote]
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Dave писал(а):Работает.
По моему, в Вашем варианте возникают проблемы в случае, когда текущий язык английский, а шаблон "Не старше 1 часа" не первый в списке шаблонов...
Dave
Сообщения: 24
Зарегистрирован: Вс апр 26, 2009 15:19

Сообщение Dave »

sa писал(а): По моему, в Вашем варианте возникают проблемы в случае, когда текущий язык английский, а шаблон "Не старше 1 часа" не первый в списке шаблонов...
Вы не поняли. Абсолютно не важно каким по счету шаблон в списке шаблонов и какой язык в системе (Неlper все равно все текстовые строки конвертирует в русскую раскладку). Здесь вся фишка в том, что команда TCS.SendKeystroke "Не старше 1 часа" работает как быстрый поиск в списке (файлов, шаблонов и т.д.). А как раз ваша команда TAB и позволила попасть в этот список шаблонов, где этот быстрый поиск и работает.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

У меня при английской раскладке клавиатуры быстрый поиск в списке не работает и выбирается первый шаблон из списка. Это наглядно видно при установке TCS.Pause = 500. С русской же раскладкой всё нормально проходит.
Dave
Сообщения: 24
Зарегистрирован: Вс апр 26, 2009 15:19

Сообщение Dave »

Кажется я знаю где копать 8) Язык ввода по умолчанию у меня стоит "Английский", а у Вас видимо "Русский". Если поменяете - то и у Вас будет работать во всех раскладках. Да, и перезагрузить компьютер после смены языка ввода по умолчанию, естественно.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Dave писал(а):Язык ввода по умолчанию у меня стоит "Английский"
У меня тоже "Английский". Простите за занудство, но Вы подтверждаете отсутствие проблемы при английской раскладке и не первом шаблоне в списке?
Dave
Сообщения: 24
Зарегистрирован: Вс апр 26, 2009 15:19

Сообщение Dave »

sa писал(а): У меня тоже "Английский". Простите за занудство, но Вы подтверждаете отсутствие проблемы при английской раскладке и не первом шаблоне в списке?
Да, подтверждаю. У меня все работает при любых раскладках. А Ваша ситуация у меня четко моделируется если выбрать "Панель управления" > "Язык и региональные стандарты" > "вкладка Языки" > "кнопка Подробнее" > "раздел Язык ввода по умолчанию" > "Русский-русская" и перезагрузиться. Тогда действительно происходит как Вы пишите, при англ.раскладке скрипт тупо выбирает первый пункт списка шаблонов. На всякий случай - у меня Win XP Rus SP3, Тотal Commander 7.04a
Ответить