TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое

Обсуждение только плагинов и утилит для Total Commander.

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

Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Добавить нечего, всё действительно много раз обсуждалось в теме, описано в Readme и для сокрытия каждого стандартного элемента окна ТК уже есть готовые команды в TCFS2.ini.
Последний раз редактировалось MVV Ср янв 18, 2012 10:58, всего редактировалось 1 раз.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Добавить можно только то, что для сокрытия и вывода нужных оконных компонентов после предпоследней модификации актуально использовать именно TCFS2, так что тема выбрана верно. Более того, что важно, в TCFS2 есть макросы проверки значений ключей, чего нет в указанных Avada программах.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Возник вопрос по использованию функции tem(<em_command_name>).
Например, в кнопке

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

TOTALCMD#BAR#DATA
%COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe
/ef  tcm(4001) tcm(540) tem(em_SrcByName) tcm(4002)
WCMICONS.DLL,5
Пассивная (левая) панель: Сортировать по имени


-1
применяется пользовательская команда em_SrcByName следующего вида

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

[em_SrcByName]
button=wcmicons.dll,5
cmd=cm_SrcByName
У меня при вызове кнопки с правой панели проскакивает периодически команда изменения сортировки для этой же панели, а не для пассивной (левой), как ожидалось. Лечить можно введением задержки после tem(em_SrcByName). Но можно ли обойтись без такого лечения и воспроизводится ли вообще у кого-нибудь такая ситуация?

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

Сообщение Flasher »

sa, а для чего используется юзеркоманда? С ней у меня вообще всегда сортируется правая панель, а с tcm(321) - левая.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

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

Сообщение Flasher »

Это не ответ. Для чего - это с каким умыслом отдаётся препочтение внутренней команде, запихнутой в пользовательскую вместо прямого использования.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Flasher писал(а):Это не ответ.
Это просто пример для воспроизведения проблемной ситуации.
Последний раз редактировалось sa Вт янв 24, 2012 21:28, всего редактировалось 1 раз.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

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

Сообщение MVV »

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

Сообщение sa »

MVV
Если создать аналогичную команду в меню "Запуск" и вызывать её через tcm(701), например, то задержку тоже вводить не нужно…

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

Сообщение MVV »

Раз на раз не приходится. Я видел немало мест, где магические задержки решали кучу проблем, которые иным путём было не решить.

К слову, delay(0) тоже добавляет некоторую задержку (вызов Sleep(0) не эквивалентен отсутствию вызова функции).
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

MVV
Может, вставить задержку Sleep(0) после пользовательской команды внутри самой TCFS2?

Или сделать как в TCMC, где величину задержки можно задать глобально через командную строку.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Из справки Хелпера:
Wait глобальное свойство, которое определяет, будут ли для
отсылки команд Тоталу использоваться функции PostMessage (по
умолчанию, Wait=False) или SendMessage (при установке значения
True). При истинном значении этого свойства всегда ожидается
реакция TC на посланную команду и только при получении результата
передается управление в скрипт. Это значит, что, вызвав некоторый
диалог TC при Wait=True, вы приостановите работу скрипта до того
момента, пока пользователь не внесет некоторые данные и сам не
закроет этот диалог. При Wait=False возможно _программное_
внесение данных в такое диалоговое окно последующими командами
скрипта и, соответсвенно, потребуется его программное закрытие. В
целом же для иных случаев использование установки Wait=True
должно по идее должно улучшить "надежность" выполнения команд,
посылаемых TC (тут надо еще поэкспериментировать).
SendCommand (строка с именем команды или ее номер[,Wait])
посылает стандартную команду окну TC. Обращение по именам
возможно только при загруженном файле INC (обычно загрузка
происходит автоматически при инициализации Helper-а). C помощью
необязательного параметра Wait можно переопределить параметр
ожидания (действует только для данной конкретной команды!).
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Стандартных команд в TCFS2 не так и много, можно написать (и вызывать) их аналоги, например:

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

tcmd=eval(tcm(#1) + if(null(#2), 0, delay(#2)))
Второй необязательный параметр может принимать значение задержки после вызова команды:

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

TCFS2.exe /ei tcmd(304) tcmd(304,1000) tcmd(304,1000) tcmd(304,1000)

А для всех команд с непустым условием отката задержка есть и так.

Кстати, к сведению, tcm использует SendMessage.
Проверьте, будут ли глюки, если использовать msg($433, x, 0, 1) (послать внутреннюю команду через PostMessage) вместо tcm(x).
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Проверил с PostMessage. Если брать команды открытия диалога настроек, то при вызове с кнопки подсказка без текста замерзает. Ну, и вроде бы помедленней срабатывает.
Ответить