Редактирование имен файлов мышью

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

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

Аватара пользователя
LonerD
Сообщения: 1174
Зарегистрирован: Вт янв 04, 2011 03:56
Откуда: Макеевка
Контактная информация:

Редактирование имен файлов мышью

Сообщение LonerD »

Цель - организовать в Тотале редактирование имен файлов с помощью одной лишь мыши.
По аналогии с проводником - двойным щелчком мыши выделяем название файла, вставляем в него например новое имя из буфера обмена (или удаляем часть названия, выделив его и нажав Удалить), затем щёлкаем кнопкой мыши по свободному месту сбоку от файла - и файл переименовывается. Задействовать клавиатуру при этом не нужно.

Возможно ли такое организовать ? (при помощи скриптов или при помощи AutoIt по аналогии с AutoFx).

Примитивный вариант - сделать кнопку, эмулирующую нажатие Enter и нажимать её после переименования файла - реализовать несложно, но хотелось бы большей универсальности.

(попрошу без дебатов, что мышь зло, и Тоталом надо управлять исключительно с клавиатуры)
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

LonerD писал(а):Примитивный вариант - сделать кнопку, эмулирующую нажатие Enter и нажимать её после переименования файла - реализовать несложно
Несложно ли — это ещё вопрос. Рекомендую попробовать с командой cm_Return. Файл/каталог/архив под курсором будет обрабатываться без учёта идущего редактирования. То есть в результате получим открытие/запуск объекта с прежним именем.
Даже самая богатая фантазия
Не представит себе наши безобразия.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Совсем для другого и по другому, но под название темы, по-моему, скрипт подходит.
Аватара пользователя
ask-rus
Сообщения: 2077
Зарегистрирован: Вт ноя 10, 2009 14:06
Откуда: Russian Federation

Сообщение ask-rus »

В сторону TWinKey:
VadiMGP писал(а):Эмуляция нажатия клавиш - разновидность бомбы* с таймером. В лучшем случае* чревато только тем, что эмулируемое действие не выполнится, в худшем - выполнится какое-то другое действие.
Хотя, тогда условия были не те.
«Минимализм - это кратчайший путь бесконечного стремления к идеалу»
«Не бойся, что не знаешь, - бойся, что не учишься» Китайская пословица
Аватара пользователя
LonerD
Сообщения: 1174
Зарегистрирован: Вт янв 04, 2011 03:56
Откуда: Макеевка
Контактная информация:

Сообщение LonerD »

sa
Спасибо, тоже выход, хотя неуниверсальный.

Avada
Мда... жаль (

Похоже, остаётся только вариант реализации на AutoIt - например, резидентная программа, которая в текстовом курсоре при нажатии средней кнопки (или длительном удержании левой кнопки) мыши будет эмулировать нажатие на Enter.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

LonerD писал(а):тоже выход, хотя неуниверсальный
Зато будет работать у тех, кому не нравится ситуация, когда при повторном щелчке на имени файла открывается окошко переименования и кто соответственно, добавил строку InplaceRename=0 в раздел [Configuration] файла wincmd.ini, чтобы она не возникала.

Add
Впрочем, способ вызова окошка переименования (повторным щелчком, командами cm_RenameOnly или cm_RenameSingleFile), и для запрашиваемого скрипта (программы) существенного значения иметь не должен.

Добавлю ещё вариант предложенного ранее скрипта, не требующий регистрации Helper-а.

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

'  Описание:   Переименовать файл/каталог под курсором в диалоге
' Параметры:   %P%N
'Требования:   1.Для применимости диалога в корневом каталоге диска ключ
'             ShowParentDirInRoot (файл wincmd.ini секция [Configuration])
'             должен иметь значение 1.
'              2.Необходима утилита TCFS2 для вызова внутренних команд ТК.
Option Explicit
Dim WSH, TCFS2, P_N
Set WSH = CreateObject("WScript.Shell")

TCFS2 = "%COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe"

WSH.Run TCFS2 & " /ef tcm(524)", 1, True
P_N = WScript.Arguments(0)
If InStrRev(P_N,"") = Len(P_N) Then
  MsgBox "Курсор не должен располагаться на строке ""..""", _
   vbOKOnly + vbCritical,  "Переименовать файл/каталог под курсором в диалоге"
  Set WSH = Nothing
  WScript.Quit
End If
WSH.SendKeys "{INSERT}{HOME}"
Wscript.Sleep(100)
WSH.SendKeys "{INSERT}"
Wscript.Sleep(100)
WSH.Run TCFS2 & " /ef tcm(2053) tcm(1002) tcm(524)", 1, True
Set WSH = Nothing
Wscript.Quit
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

Уточнение моего предыдущего поста. Заставить работать команду cm_Return для сохранения результатов переименования можно, но только её клавиатурным вызовом. Если повесить команду на кнопку, будет открытие/запуск объекта с прежним именем. (На ру-борде Rodny правильно сказал, что причина в уводе фокуса с поля ввода на кнопку.)
Даже самая богатая фантазия
Не представит себе наши безобразия.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Можно попросить Гислера добавить ключ в wincmd.ini, который будет менять реакцию на нажатие мышки вне поля переименования: либо это отказ от изменений (ESC), как сейчас, либо сохранение изменений (ENTER), как в проводнике.
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Думаю, вряд ли он пойдет на добавление флага, так кардинально меняющего поведение. Это может чересчур сильно контузить, если сделаешь неосторожное действие.

Думаю, максимум, на что он пойдёт - на добавление сообщения с вопросом при щелчке вне поля переименования. Тут хотя бы нежелательных переименований не будет происходить оттого, что флаг оказался не в том положении.
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

sa
Это правильно. Но и в отношении TWinKey мы тут кое-что с автором, пожалуй, обсудим...

MVV
Как насчёт зарепортить пусть даже только в своём варианте?
Даже самая богатая фантазия
Не представит себе наши безобразия.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

MVV писал(а):Это может чересчур сильно контузить, если сделаешь неосторожное действие.
Например, удаление в корзину или окончательно, в зависимости от настроек, может контузить тоже ощутимо.
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

sa писал(а):
MVV писал(а):Это может чересчур сильно контузить, если сделаешь неосторожное действие.
Например, удаление в корзину или окончательно, в зависимости от настроек, может контузить тоже ощутимо.
Но при удалении в тотале всегда задается вопрос. И это поведение не менялось добрый десяток лет.
А в данном случае человека может конкретно смутить то, что он, щелкнув мышью, чтобы отменить переименование, наоборот выполнит его. К таким вещам, насколько я успел заметить, Гислер очень серьезно относится.
Avada писал(а):Как насчёт зарепортить пусть даже только в своём варианте?
Теоретически возможно.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

MVV писал(а):А в данном случае человека может конкретно смутить то, что он, щелкнув мышью, чтобы отменить переименование, наоборот выполнит его.
Естественно, по умолчанию должен остаться устоявшийся вариант, а для перехода на новый потребуются определённые манипуляции.
Аватара пользователя
CaptainFlint
Сообщения: 6243
Зарегистрирован: Вт дек 14, 2004 22:34
Контактная информация:

Сообщение CaptainFlint »

sa писал(а):Естественно, по умолчанию должен остаться устоявшийся вариант, а для перехода на новый потребуются определённые манипуляции.
Если бы не туча сборок, авторы которых плевали на умолчания…
Почему же, ё-моё, ты нигде не пишешь "ё"?
Аватара пользователя
Моторокер
Сообщения: 1517
Зарегистрирован: Пт май 06, 2005 08:22
Откуда: г. Пермь (читается Перьмь)
Контактная информация:

Сообщение Моторокер »

sa писал(а):Можно попросить Гислера добавить ключ в wincmd.ini, который будет менять реакцию на нажатие мышки вне поля переименования: либо это отказ от изменений (ESC), как сейчас, либо сохранение изменений (ENTER), как в проводнике.
Есть ещё третий вариант - оставаться в режиме редактирования. А то при случайном щелчке или потере фокуса (всплывающее окно) можно случайно переименовать файл.

Можно добавить маленькую кнопку рядом или внутри поля редактирования.
Думаю, максимум, на что он пойдёт - на добавление сообщения с вопросом при щелчке вне поля переименования.
Только не это. Если и показывать кнопку сохранения/отмены, то сразу. Если ещё их и подсветить дефолтно, тогда наглядно будет видна последующая реакция Тотала на щелчок вне поля, тогда будет меньше путаницы.
плагины для Total Commander, статьи Graphics Converter; NSCopy; SEO HTML; KillOK; Плагин на Delphi
ПармаСруб - строительство домов и бань в Перми
Ответить