Отключение "Define colors by type" с кнопки

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

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

sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Avada писал(а):
sa писал(а):Можно ещё короче:
TCS.SendKeystroke "+{TAB 5} "
Не работает нигде.
А пробел между } и " не пропущен случайно?
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

sa писал(а):А пробел между } и " не пропущен случайно?
Точно, пропущен. Да, теперь работает, спасибо.
Даже самая богатая фантазия
Не представит себе наши безобразия.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Приведённый в исходном скрипте код {SPACE} для клавиши пробела, по моему, не существует вовсе.
Срабатывание в нём происходит за счёт обычного пробела между } и {.
Если хочется пробел сделать более заметным, можно использовать что-нибудь вроде
TCS.SendKeystroke "+{TAB 5}" & chr(32)
Аватара пользователя
Tol!k
Сообщения: 1727
Зарегистрирован: Вт апр 01, 2008 20:02
Откуда: Арзамас

Сообщение Tol!k »

код {SPACE} для клавиши пробела, по моему, не существует вовсе
sa, Изображение
Я ещё репу чесал, почему работает: TCS.SendKeystroke "+{TAB 5} {SPACE}"
но не работает:
TCS.SendKeystroke "+{TAB 5}"
TCS.SendKeystroke "{SPACE}"

А сейчас заглянул в SendKeystroke.txt — нет там такой буквы!
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

Tol!k
В качестве кода клавиши, соответствующей печатному символу, используется сам символ.
<...>
Для описания нажатий клавиш, которые не отображаются на экране (например, ENTER или TAB) или вызывают выполнение определенных действий, следует использовать перечисленные ниже коды:
А символ пробела-то на экране отображается!
Даже самая богатая фантазия
Не представит себе наши безобразия.
Аватара пользователя
Tol!k
Сообщения: 1727
Зарегистрирован: Вт апр 01, 2008 20:02
Откуда: Арзамас

Сообщение Tol!k »

Avada
Ну давай, давай, тычь меня носом в документацию :)
Сам-то не вспомнил, что надо писать TCS.SendKeystroke " "
А у всех остальных, похоже, и так всё хорошо работало :D
А символ пробела-то на экране отображается!
А в UnpackHere.vbs Volniy пишет :
TCS.SendKeystroke chr(32)
Последний раз редактировалось Tol!k Ср ноя 04, 2009 18:37, всего редактировалось 1 раз.
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

Tol!k писал(а):Ну давай, давай, тычь меня носом в документацию :)
Сам-то не вспомнил, что надо писать TCS.SendKeystroke " "
Ладно-ладно, все хороши, чего уж там.
Tol!k писал(а):А у всех остальных, похоже, и так всё хорошо работало
А у меня где по самому первому варианту скрипта работало, там и с новыми вариантами работает, а где не работало — так и сейчас ничего не получается. Ладно, завтра буду дальше искать корень зла. Не вижу, хоть убей, разницы в настройках этой страницы. (Кстати, инверсные курсор/выделение я не использую.)
Даже самая богатая фантазия
Не представит себе наши безобразия.
Аватара пользователя
Tol!k
Сообщения: 1727
Зарегистрирован: Вт апр 01, 2008 20:02
Откуда: Арзамас

Сообщение Tol!k »

Avada писал(а):где не работало — так и сейчас ничего не получается. Ладно, завтра буду дальше искать корень зла.
Замени код этим:
' Перейти к галочке отключения раскраски файлов, изменить ее значение
TCS.Pause = 800
TCS.SendKeystroke "+{TAB}"
TCS.SendKeystroke "+{TAB}"
TCS.SendKeystroke "+{TAB}"
TCS.SendKeystroke "+{TAB}"
TCS.SendKeystroke "+{TAB}"
TCS.SendKeystroke chr(32)

и посмотри как отрабатываются нажатия
Аватара пользователя
mf-zl
Сообщения: 71
Зарегистрирован: Вс авг 21, 2005 03:30
Откуда: BLR
Контактная информация:

Сообщение mf-zl »

Может кому будет интересен скрипт на ахк ? :wink:

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

/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
 *  Project : TC > Toggle "Define colors by file type" option                  *
 *   Author : Mad*Forces / ZeLen1y (zl@mail.by)                                *
 * Compiler : AutoHotkey 1.0.48.5 (www.autohotkey.com)                         *
 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                                                               */
#NoEnv
#NoTrayIcon
#SingleInstance force

SetBatchLines, -1
SetControlDelay, -1
SetWinDelay, -1

If WinActive("ahk_class TTOTAL_CMD")
{ PostMessage, 1075, 494, 0,, ahk_class TTOTAL_CMD
  WinWait, ahk_class TDLGCONFIGALL,, 3
  If !ErrorLevel
  { ControlGet, _d, Checked,, TCheckBox2, ahk_class TDLGCONFIGALL
    Control, % (_d ? "Un" : "") "Check", % !_d, TCheckBox2, ahk_class TDLGCONFIGALL
    ControlClick, TButton37, ahk_class TDLGCONFIGALL
  }
}
ExitApp
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

Tol!k
На домашних компах нажатия отрабатываются правильно, последним действием галка ставится/снимается. На рабочем компе навигация идёт нормально, но состояние нужного чекбокса на последней стадии меняться не хочет.
Даже самая богатая фантазия
Не представит себе наши безобразия.
Аватара пользователя
prog_san
Сообщения: 285
Зарегистрирован: Сб сен 29, 2007 00:52
Откуда: Пенза

Сообщение prog_san »

Как ни крути, а нужна встроенная команда в TotalCommander, чтобы такие костыли не корячить :)) Я думаю, Ghisler'у стоит еще раз напомнить про данную "хотелку" - может все таки реализует ...
Errare humanum est
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

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

Сообщение Flasher »

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

With CreateObject("WScript.Shell")
  .Exec"%COMMANDER_PATH%\Utils\TCMC\TCMC.exe CM494"
  WScript.Sleep 10 ' Не работает - увеличиваем число, пока не заработает
  .SendKeys "+{TAB 5} ~"
End With
Путь указываем свой.

Самому отключение никогда не требуется. Не понимаю, зачем это надо...
Ответить