Script Request

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

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

Аватара пользователя
AlexTex
Сообщения: 42
Зарегистрирован: Чт июл 10, 2008 19:00

Сообщение AlexTex »

Batya, большое спасибо!
Работает, но немного медленно: между нажатием на кнопку и созданием файла проходит ~3сек. Так должно быть или это что-то у меня косячит?
Аватара пользователя
Batya
Сообщения: 2236
Зарегистрирован: Ср дек 15, 2004 09:51
Откуда: Москва, Россия

Сообщение Batya »

AlexTex писал(а):между нажатием на кнопку и созданием файла проходит ~3сек.
Ты это время определил визуально, когда файл стал виден в панели?
Может автообновление не моментально показывает новый файл?
Есть ещё вариант - укажи для скрипта третий параметр %L. На работу скрипта он не влияет, но TC всегда перечитывает панели после отработки кнопок, где в параметрах есть %L.
Ну и наконец, 3 секунды тебя сильно напрягают?
Нет, я не сплю. Я просто медленно моргаю.
laburj
Сообщения: 186
Зарегистрирован: Пн мар 07, 2005 07:04

Сообщение laburj »

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

Сообщение Flasher »

laburj

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

Dim TCS
Set TCS = CreateObject("TCScript.Helper")
TCS.LockTC True
TCS.SendCommand "cm_GotoDriveX"
TCS.SendCommand "cm_TransferLeft"
TCS.SendCommand "cm_GotoPreviousDir"
Set TCS = Nothing
Wscript.Quit
в cm_GotoDriveX "X" - поменять на нужную букву диска.
<< Скрипт скорее шутка :mrgreen: См. правильный вариант у Batya через пост ниже.
Последний раз редактировалось Flasher Чт май 13, 2010 18:52, всего редактировалось 2 раза.
Аватара пользователя
AlexTex
Сообщения: 42
Зарегистрирован: Чт июл 10, 2008 19:00

Сообщение AlexTex »

Batya писал(а):Ну и наконец, 3 секунды тебя сильно напрягают?
Нет, конечно, но с параметром %L - душа радуется :D
Batya, еще раз тебе огромное спасибо за помощь и не сердись за мою, может несколько излишнюю, дотошность. Иногда приставание с дурацкими вопросами к знающим людям дает плоды в виде приобретенных знаний.

P.S. Рано радовался - то работает, то "индекс выходит за пределы допустимого диапазона". Закономерность не выявлена. :(
Аватара пользователя
Batya
Сообщения: 2236
Зарегистрирован: Ср дек 15, 2004 09:51
Откуда: Москва, Россия

Сообщение Batya »

AlexTex писал(а):Рано радовался - то работает, то "индекс выходит за пределы допустимого диапазона".
Покажи параметры кнопки.

laburj
Кнопка TC писал(а):TOTALCMD#BAR#DATA
"%Commander_Path%\TOTALCMD.EXE" /O /L=X:\

wcmicons.dll,50
Показать слева диск X:


-1
Нет, я не сплю. Я просто медленно моргаю.
Аватара пользователя
AlexTex
Сообщения: 42
Зарегистрирован: Чт июл 10, 2008 19:00

Сообщение AlexTex »

Batya писал(а):Покажи параметры кнопки.

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

%commander_path%\Service\Scripts\clipboard_text.vbs"
clip.txt 2 %L
%commander_path%\Icons\tc133.ico
Замечено следующее: работает, если папка не пуста и курсор находится на одном из файлов.
Без %L работает в любом случае.
Аватара пользователя
Batya
Сообщения: 2236
Зарегистрирован: Ср дек 15, 2004 09:51
Откуда: Москва, Россия

Сообщение Batya »

AlexTex
А, ну да. Я вспомнил. Особенность (баго-фича) - если курсор стоит на ".." и в параметрах есть %L, то параметры не передаются вообще, т.е. запуск совсем без параметров.
Так что %L лучше не использовать, а потерпеть несколько секунд ;)
Нет, я не сплю. Я просто медленно моргаю.
Аватара пользователя
AlexTex
Сообщения: 42
Зарегистрирован: Чт июл 10, 2008 19:00

Сообщение AlexTex »

Ну, теперь все точки над "і" поставлены - "бум терпеть". :) Thanx!
laburj
Сообщения: 186
Зарегистрирован: Пн мар 07, 2005 07:04

Сообщение laburj »

Flasher писал(а):Скрипт скорее шутка
спасибо! кстати не совсем шутка. я примерно что-то похожее и пытался сделать, только не нашёл команды перехода на левую панель. А то, что предложил Batya не совсем то, я так тоже пробовал.
Batya писал(а):Кнопка TC писал(а):
так тоже пробовал, но в этой ситуации при переключении на какой-либо диск - попадаешь в его корень. У команды cm_GotoDrive поведение другое, если только в настройках-основные операции- не стоит галка "при смене диска всегда переходить в корневой каталог", а у меня она снята)
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Flasher писал(а):в cm_GotoDriveX "X" - поменять на нужную букву диска.
Скрипт работает. Не понял только, для чего введены строки

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

TCS.SendKeystroke "{END}"
TCS.Pause = 100
?
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

laburj
В любом случае мой скрипт сработает правильно, только если курсор уже будет в левой панели; если он в правой, то работает то так, то эдак в зависимости от глубины каталогов.
laburj писал(а):У команды cm_GotoDrive поведение другое
Верно, при описанном ключе с нулевым значением команда осуществляет переход в открытую в последний раз папку на указанном диске.
Добавлено: laburj, а чем так эта команда сдалась при вполне юзабильных табах и DirMenu?
sa писал(а):Скрипт работает. Не понял только, для чего введены строки
Действительно, можно убрать(исправил). Я не сообразил, что после команды cm_GotoDrive курсор встанет на первый элемент списка, просто команда cm_TransferLeft переводит папку под курсором в левую панель. Соответственно, если курсор встанет на файл либо на элемент перехода в родительский каталог, то команда сработает нужным образом.
laburj
Сообщения: 186
Зарегистрирован: Пн мар 07, 2005 07:04

Сообщение laburj »

а чем так эта команда сдалась при вполне юзабильных табах и DirMenu?
хочу использовать как альтернативу alt+f1/f2 - т.е. выбору дисков левой/правой панелей. Дисков у меня обычно не больше 3х-4х и хочу повесить хоткеи alt+1/2/3/4 на диски c,d,e,f соответственно. Табами и DirMenu также пользуюсь, но это немного другое
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

laburj
Забудь про старые варианты >>

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

'==============================
'Открыть диск X: в левой панели
'==============================
Dim TCS
Set TCS = CreateObject("TCScript.Helper")
TCS.LockTC True
TCS.SendCommand "cm_FocusLeft"
TCS.SendCommand "cm_GotoDriveX"
Set TCS = Nothing
Wscript.Quit
laburj
Сообщения: 186
Зарегистрирован: Пн мар 07, 2005 07:04

Сообщение laburj »

Flasher, спасибо
так и думал, что должна быть команда типа "cm_FocusLeft", но в "Разном" поискать её догадался
Ответить