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

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

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

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

Сообщение MVV »

Во-первых, код клавиши Shift - $10, а не просто 10. Во-вторых, код будет понятнее, если использовать функцию if, а не блоки с |.

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

keyRelease=if(msg($433, tt_GetAsyncKeyState, #2) < 0, set_tcini(TCFS2_keyRelease, #1, 1)+msg($0101, #2), set_tcini(TCFS2_keyRelease, #1, 0))
keyReturn=if(tcini(TCFS2_keyRelease, #1, #), msg($0100, tcini(TCFS2_keyRelease, #1, #))+set_tcini(TCFS2_keyRelease, #1, 0))
ddddd=run_item(keyRelease, keyShift, $10) run_item(keyRelease, keyCtrl, $10) run_item(set_separator, 10) run_item(keyReturn, keyShift) run_item(keyReturn, keyCtrl)
Т.е., если шифт зажата, отжимаем и ставим флаг, потом делаем что нужно, а потом возвращаем шифт на место. С другими модификаторами поступаем так же. Но что-то не очень помогает - если нажимаю кнопку с шифтом, прыгает на 0%, а если бы шифт отжался, прыгала бы на 10%.
Последний раз редактировалось MVV Пт июн 29, 2012 18:21, всего редактировалось 2 раза.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

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

Сообщение MVV »

Если WM_KEYUP посылается через SendMessage, а не PostMessage, то по возвращаении клавиша уже будет отжата. Другое дело, обработается ли оно так корректно, т.к. обычно его посылают через PostMessage.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

MVV писал(а):Если WM_KEYUP посылается через SendMessage
Так "если" или посылается (без гадания на кофейной гуще, т.с.) ?

Да и насчёт Ctrl/Shift: нам известно, что сепаратор при их зажатии прыгает на 0/25/75/100. Если поставить 25, то как оно себя поведёт?
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Если 25, то ты не заметишь разницы. А TCFS2 позволяет посылать сообщения обоими способами, для этого в функции msg есть последний параметр (по умолчанию через SendMessage). Потому и пишу с "если".

Ещё есть момент. Если тотал узнаёт о том, что клавиша зажата, через GetAsyncKeyState (глобально), а не через GetKeyState (согласно обработанным сообщениям о зажатии/отжатии), то фокус с посылом отжатия клавиши не сработает.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

MVV писал(а):Если 25, то ты не заметишь разницы.
Я имел в виду в твоём примере - вместо 10.
MVV писал(а):Потому и пишу с "если".
Пардон, не о том подумал..
Аватара пользователя
LonerD
Сообщения: 1174
Зарегистрирован: Вт янв 04, 2011 03:56
Откуда: Макеевка
Контактная информация:

Сообщение LonerD »

В большинстве случаев, как подсказал Flasher, вместо программного нажатия Таба проще воспользоваться командами 4001 и 4002:

[em_TabKeyEmulation]
cmd=%commander_path%\Plugins\exe\TCFS2\TCFS2.exe /ef msg($0B, 0) "tcm(4002), eval(L_isActive) | tcm(4001)" msg($0B, 1) redraw()
:lol:

Возможно ли в TCFS2 отключить заголовок окна Тотала, при этом не разворачивая окно на весь экран?
Вариант
TCFS2.exe /ei c2 redraw
работает в тех случаях, когда Тотал отображается в окошке. А вот если окошко Тотала развёрнуто - то после выполнения команды оно вообще разворачивается на полный экран и перекрывает панель задач Windows (она у меня вверху экрана).

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

Сообщение Flasher »

LonerD писал(а):Возможно ли в TCFS2 отключить заголовок окна Тотала, при этом не разворачивая окно на весь экран?
Если воспользоваться поиском по теме, то возможно всё.
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

А ведь этот парень прав :D В теме очень много всего обсуждалось, в том числе и это. Подскажу, разворачивать при скрытом заголовке нельзя, винда так определяет полноэкранные приложения и автоматом прячет панель задач, нужно вместо разворачивания изменять размер и положение окна до максимально возможных. И в TCFS2 даже есть пример команды switch_sp (кстати, заметил, что в Readme я её поправил, а в инишниках - нет, там внутри последнего параметра надо заменить вызов if(,,) на тернарный оператор ?:)...
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

LonerD писал(а):В большинстве случаев, как подсказал Flasher, вместо программного нажатия Таба проще воспользоваться командами 4001 и 4002
Но только не в случае, когда это Пример использования клавиши Tab от Flasher. :)
Аватара пользователя
LonerD
Сообщения: 1174
Зарегистрирован: Вт янв 04, 2011 03:56
Откуда: Макеевка
Контактная информация:

Сообщение LonerD »

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

Сообщение Flasher »

LonerD
Почти. В т.ч.

sa
Ай-яй, какие мы смекалистые.. Без твоего флуда вполне обошлись бы, при том, что именно в контексте этого примера и велось обсуждение..
Аватара пользователя
LonerD
Сообщения: 1174
Зарегистрирован: Вт янв 04, 2011 03:56
Откуда: Макеевка
Контактная информация:

Сообщение LonerD »

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

Сообщение Flasher »

LonerD писал(а):Если она сверху или сбоку - то такой метод не срабатывает, для этих вариантов - свои частные случаи.
Мы с MVV ещё на начальных этапах утилиты это обсуждали, всё срабатывало.
LonerD писал(а):Потому предварительно нужно каким-то образом вычислить координаты и ширину.
Для ширины, как и для длины, есть макрос. Координаты также вычисляются. Только зачем?
Аватара пользователя
LonerD
Сообщения: 1174
Зарегистрирован: Вт янв 04, 2011 03:56
Откуда: Макеевка
Контактная информация:

Сообщение LonerD »

всё срабатывало.
И по приведённым тобою ссылкам у тебя лично срабатывает в случае расположения панели задач слева, справа или вверху экрана?
У меня они отрабатывают только в частных случаях, когда панель задач находится внизу. В других случаях:
- по ссылке "Почти." - панель задач перекрывает окно Тотала.
- по ссылке "В т.ч." - наоборот, окно Тотала разворачивается на весь экран.
Ответить