TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое
Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер
rust,
Религия не запрещает прописать в параметрах send_wait нужный тебе класс TDupeSelForm вместо TCOMBOINPUT, раз у тебя поиск с дубликатами, а не простой.
sa,
Не вижу проблем в использовании макроса. А усложнять функцию send не хочется. К тому же, в макросе третий параметр имеет значение по умолчанию 5 секунд, чего я точно не сделаю для функции.
Религия не запрещает прописать в параметрах send_wait нужный тебе класс TDupeSelForm вместо TCOMBOINPUT, раз у тебя поиск с дубликатами, а не простой.
sa,
Не вижу проблем в использовании макроса. А усложнять функцию send не хочется. К тому же, в макросе третий параметр имеет значение по умолчанию 5 секунд, чего я точно не сделаю для функции.
Да не стал заморачиваться, оставил send с задержкой работает стабильно. Кстати, победил-таки puntoswitcher - это ^ перед %~n1иначе вместо "абв где" подставляет "пить где"
не помню на какой раскладке.
Гислер пишет что параметр %P в Search панели намеренно пустой, из спортивного интереса попробовал работает, как раз можно выбрать отправлять на TDupeSelForm или TCOMBOINPUT, может кому пригодится
Код: Выделить всё
start "" "%COMMANDER_PATH%\addons\tcfs2.exe" /ef "tcm(3312,1) delay(100) send(`+(){DQ}^~(%~n1){BS 2}*{DQ}{ENTER}`)"Гислер пишет что параметр %P в Search панели намеренно пустой, из спортивного интереса попробовал
Код: Выделить всё
/ef "if(null(%P), do_something, do_something_else)"Всем доброго дня/ночи!
Есть такая проблема. В видимой части окна TC иногда умещается не больше 1/2 от общей ширины панели, так как дисплей узкий, а колонок много и они широкие. Для того, чтобы посмотреть содержимое колонок, скрытых за правой границей окна, приходится сдвигать панель вправо. А посмотрев, сдвигать ее обратно влево к началу.
Штатно для этого можно использовать стрелки навигации курсора Left/Right, но они двигают панель ну о-о-очень маленькими шажками.
Поэтому нужен хоткей, который выполнял бы ту же функцию, что во многих текстовых программах клавиши [End] и [Home] - переместить фокус ввода в конец/начало строки.
Также пригодилась бы команда для дискретного перемещения влево/вправо на ширину одной колонки (по аналогии с командой в текстовых редакторах "переместить фокус к следующему/предыдущему слову" (Ctrl+Left/Right).
Мне посоветовали попросить помощи здесь, поскольку штатный функционал TC, похоже, не позволяет этого сделать, хотя хотелка вроде бы не самая экзотическая
А TCFS2 такое может?
Заранее спасибо!
Есть такая проблема. В видимой части окна TC иногда умещается не больше 1/2 от общей ширины панели, так как дисплей узкий, а колонок много и они широкие. Для того, чтобы посмотреть содержимое колонок, скрытых за правой границей окна, приходится сдвигать панель вправо. А посмотрев, сдвигать ее обратно влево к началу.
Штатно для этого можно использовать стрелки навигации курсора Left/Right, но они двигают панель ну о-о-очень маленькими шажками.
Поэтому нужен хоткей, который выполнял бы ту же функцию, что во многих текстовых программах клавиши [End] и [Home] - переместить фокус ввода в конец/начало строки.
Также пригодилась бы команда для дискретного перемещения влево/вправо на ширину одной колонки (по аналогии с командой в текстовых редакторах "переместить фокус к следующему/предыдущему слову" (Ctrl+Left/Right).
Мне посоветовали попросить помощи здесь, поскольку штатный функционал TC, похоже, не позволяет этого сделать, хотя хотелка вроде бы не самая экзотическая
Заранее спасибо!
TCFS2 скроллбарами не управляет. Есть ScrollTC с горизонтальной прокруткой, но это уже мышиная история. А тут мы обходимся сдвигом сепаратора (ищем спецтему в Автоматизации).oshizelly писал(а):хоткей, который выполнял бы ту же функцию, что во многих текстовых программах клавиши [End] и [Home] - переместить фокус ввода в конец/начало строки.
Текущие размеры колонок не поймать, поэтому пока не представляется возможным.oshizelly писал(а):команда для дискретного перемещения влево/вправо на ширину одной колонки
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Flasher
При описании задачи я забыл упомянуть (точнее, не посчитал существенным), что TC юзается в вертикальном режиме (панели одна над другой). Поэтому сдвиг сепаратора происходил бы в вертикальной плоскости вверх/вниз, никак не влияя на ширину панелей.
Неужели совсем ничего нельзя сделать
(Чтобы было понята моя ситуация: вертикальный режим использую не от хорошей жизни. Это вынужденная мера, так как дисплей монитора имеет разрешение 1200 x 1920, то есть, он высокий, но узкий. При горизонтальном расположении и разделителе на 50% панели TC имели бы ширину 1200/2 = 600 px, что уже совсем ни в какие ворота.)
А дефолтную ширину колонок для текущего набора колонок "поймать" нетрудно: она явным образом записана в файле wincmd.ini.
К сожалению, сдвиг сепаратора проблемы для меня не решает даже частичноА тут мы обходимся сдвигом сепаратора (ищем спецтему в Автоматизации).
Неужели совсем ничего нельзя сделать
(Чтобы было понята моя ситуация: вертикальный режим использую не от хорошей жизни. Это вынужденная мера, так как дисплей монитора имеет разрешение 1200 x 1920, то есть, он высокий, но узкий. При горизонтальном расположении и разделителе на 50% панели TC имели бы ширину 1200/2 = 600 px, что уже совсем ни в какие ворота.)
Текущие, может, и не поймать. Но, к примеру, я (и, думаю, что большинство юзеров) очень редко меняю в течение сеанса TC ширину колонок вручную, после того, как режим просмотра настроен, так сказать, раз и навсегда (до следующего измененияТекущие размеры колонок не поймать, поэтому пока не представляется возможным.
Попробуй новую TCFS2, обновив также и TCFS2Tools отсюда же. Добавил возможность получать дескрипторы панелей, так что можно посылать им сообщения, в том числе для скроллинга.
Пример прокрутки списка в левой панели на 3 страницы вперёд (в любом режиме):
Пример горизонтальной прокрутки левой панели на 3 страницы вправо (в пользовательском режиме):
Для возврата нужно прокручивать назад. Можно на 2 хоткея (к примеру, на Ctrl+Shift+Влево/Вправо) повесить прокрутку влево/вправо.
Если поиграться с сообщением WM_HSCROLL, можно сразу прокручивать в начало или конец без цикла, а можно наоборот уменьшить шаг прокрутки, прокручивая на несколько "юнитов" вместо страницы (размер "юнита", видимо, соответствует тому, насколько тотал прокручивает список по клавишам Влево/Вправо).
Пример прокрутки списка в левой панели на 3 страницы вперёд (в любом режиме):
Код: Выделить всё
TCFS2 /ei "scroll_list(1, 3)"Код: Выделить всё
TCFS2 /ei "scroll_list_h(1, 3)"Если поиграться с сообщением WM_HSCROLL, можно сразу прокручивать в начало или конец без цикла, а можно наоборот уменьшить шаг прокрутки, прокручивая на несколько "юнитов" вместо страницы (размер "юнита", видимо, соответствует тому, насколько тотал прокручивает список по клавишам Влево/Вправо).
Имеется такая кнопка:Работает, но не устраивает, в частности, что портит буфер из-за использования cm_CopyNamesToClip (2017) с последующей вставкой по Ctrl+V. Как поизящней передать имя файла под курсором в поле “Искать файлы:” в диалоге поиска?
Код: Выделить всё
TOTALCMD#BAR#DATA
%COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe
/ef "tcm(524) tcm(2017) send(`{TAB}`) delay(200) tcm(540) tcm(501,1) delay(200) send(`({BKSP}^V{ENTER})`, findwnd(`TFindFile`)) loop(if(findwnd(`TFindFile`)==0, 0, 0*sendmsg(findwnd(`TFindFile`), $104, $12, $1, 1)*sendmsg(findwnd(`TFindFile`), $104, $30, $1, 1)*delay(1000)+1)) if(findwnd(`TFindFile`)==0, tcm(3302) + send(`{TAB}`) + delay(200) + tcm(3101,1) + delay(200) + send(`%%о%%ц%%o%%p`, findwnd(`TInpComboDlg`)))"
WCMICONS.DLL,14
Копировать файл в папку/подпапки целевой панели с одноимённым файлом (вывод результатов поиска на панель по Alt-0 или "ручками")
-1
А почему просто не написать %M вместо ^V? Курсор на основной панели останется на том же файле, поэтому %M должно сработать после перехода на другую панель, и tcm(2017) можно будет убрать.
А какие нажатия посылаются через WM_SYSKEYDOWN в кнопке? Просто Alt+0? Зачем тогда посылать нажатие Alt, если сообщение уже подразумевает, что его нажали? Можно только второе слать.
А какие нажатия посылаются через WM_SYSKEYDOWN в кнопке? Просто Alt+0? Зачем тогда посылать нажатие Alt, если сообщение уже подразумевает, что его нажали? Можно только второе слать.
MVV
При использовании %N возникают проблемы с файлами, содержащими в имени, например скобки () или знак + .
При использовании %N возникают проблемы с файлами, содержащими в имени, например скобки () или знак + .
Точно, учту.Можно только второе слать.
Последний раз редактировалось sa Пт мар 21, 2014 16:07, всего редактировалось 1 раз.
Да, точно, модификаторы и скобки всё портят. Возможно, надо ввести специальный режим для send, чтобы слать юникод как есть.
Как вариант, можешь создать шаблон поиска и из TCFS2 в конфиг вписывать имя файла в нужном месте, а затем загружать шаблон через LOADSEARCH. Понадобится юзер-команда em_LoadSearch с командой LOADSEARCH и параметром %A. Получится что-то вроде (я использовал шаблон с именем 0):
Кстати, даже если шаблона не было, всё работает. Плохо, если шаблон был, и был со специфическими параметрами.
Добавлено спустя 38 минут:
А вообще, попробуй этот билд, я добавил чисто юникодный режим отправки, когда все служебные символы игнорируются. Включается режим добавлением собаки перед строкой отправляемых символов (как в C#):
Как вариант, можешь создать шаблон поиска и из TCFS2 в конфиг вписывать имя файла в нужном месте, а затем загружать шаблон через LOADSEARCH. Понадобится юзер-команда em_LoadSearch с командой LOADSEARCH и параметром %A. Получится что-то вроде (я использовал шаблон с именем 0):
Код: Выделить всё
/ef "set_tcini(searches, 0_SearchFor, `%N`) tem(`em_LOADSEARCH 0`)"Добавлено спустя 38 минут:
А вообще, попробуй этот билд, я добавил чисто юникодный режим отправки, когда все служебные символы игнорируются. Включается режим добавлением собаки перед строкой отправляемых символов (как в C#):
Код: Выделить всё
/ef "tcm(501,1) delay(200) send(@`%~%+-!:)%^&$% jgfj gGG приВет`, findwnd(`TFindFile`))"С юникодным режимом лучше, чем с шаблоном поиска: и городить всего меньше и нет проблем с поиском только в выделенных файлах/каталогах, как в том случае.
Теперь и буфер цел, и в исходной панели (как и в целевой) можно сразу выделять несколько файлов/папок для копирования. Спасибо!
Код: Выделить всё
TOTALCMD#BAR#DATA
%COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe
/ef "send(`{TAB}`) delay(200) tcm(540) tcm(501,1) delay(200) send(`({BKSP})`, findwnd(`TFindFile`)) send(@`%N`, findwnd(`TFindFile`)) send(`({ENTER})`, findwnd(`TFindFile`)) loop(if(findwnd(`TFindFile`)==0, 0, 0*sendmsg(findwnd(`TFindFile`), $104, $30, $1, 1)*delay(1000)+1)) tem(em_SelTrgFile) delay(200) tcm(2023) send(`{TAB}`) delay(200) tcm(3101,1) delay(200) send(`%%о%%ц%%o%%p`, findwnd(`TInpComboDlg`))"
WCMICONS.DLL,14
Копировать в папку/подпапки целевой панели, содержащие файл одноимённый с файлом под курсором
-1
Последний раз редактировалось sa Сб мар 22, 2014 01:09, всего редактировалось 2 раза.
Пожалуй да, подправил. Раньше при вставке из буфера таким образом затирался старый буфер, если курсор оказывался на [..]
Add
И всё-таки {BKSP} пригодится и теперь для случая с [..].
Убрал ещё лишний if в конце и заменил выделение всех найденных файлов на выделение по точному соответствию имени (потребуется пользовательская команда em_SelTrgFile с командой SELECTFILES и параметром "%M").
Add
И всё-таки {BKSP} пригодится и теперь для случая с [..].
Убрал ещё лишний if в конце и заменил выделение всех найденных файлов на выделение по точному соответствию имени (потребуется пользовательская команда em_SelTrgFile с командой SELECTFILES и параметром "%M").