Страница 57 из 130

Добавлено: Пт июн 29, 2012 18:01
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%.

Добавлено: Пт июн 29, 2012 18:13
Flasher
MVV
Так функция не может ждать, пока та или иная клавиша отожмётся. Тут либо delay, либо придумывать новую функцию по выжиданию.

Добавлено: Пт июн 29, 2012 18:17
MVV
Если WM_KEYUP посылается через SendMessage, а не PostMessage, то по возвращаении клавиша уже будет отжата. Другое дело, обработается ли оно так корректно, т.к. обычно его посылают через PostMessage.

Добавлено: Пт июн 29, 2012 18:26
Flasher
MVV писал(а):Если WM_KEYUP посылается через SendMessage
Так "если" или посылается (без гадания на кофейной гуще, т.с.) ?

Да и насчёт Ctrl/Shift: нам известно, что сепаратор при их зажатии прыгает на 0/25/75/100. Если поставить 25, то как оно себя поведёт?

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

Ещё есть момент. Если тотал узнаёт о том, что клавиша зажата, через GetAsyncKeyState (глобально), а не через GetKeyState (согласно обработанным сообщениям о зажатии/отжатии), то фокус с посылом отжатия клавиши не сработает.

Добавлено: Пт июн 29, 2012 18:39
Flasher
MVV писал(а):Если 25, то ты не заметишь разницы.
Я имел в виду в твоём примере - вместо 10.
MVV писал(а):Потому и пишу с "если".
Пардон, не о том подумал..

Добавлено: Вт июл 03, 2012 23:02
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 окно не перекрывало панель задач при любом её расположении и размере.

Добавлено: Вт июл 03, 2012 23:13
Flasher
LonerD писал(а):Возможно ли в TCFS2 отключить заголовок окна Тотала, при этом не разворачивая окно на весь экран?
Если воспользоваться поиском по теме, то возможно всё.

Добавлено: Ср июл 04, 2012 00:31
MVV
А ведь этот парень прав :D В теме очень много всего обсуждалось, в том числе и это. Подскажу, разворачивать при скрытом заголовке нельзя, винда так определяет полноэкранные приложения и автоматом прячет панель задач, нужно вместо разворачивания изменять размер и положение окна до максимально возможных. И в TCFS2 даже есть пример команды switch_sp (кстати, заметил, что в Readme я её поправил, а в инишниках - нет, там внутри последнего параметра надо заменить вызов if(,,) на тернарный оператор ?:)...

Добавлено: Ср июл 04, 2012 00:34
sa
LonerD писал(а):В большинстве случаев, как подсказал Flasher, вместо программного нажатия Таба проще воспользоваться командами 4001 и 4002
Но только не в случае, когда это Пример использования клавиши Tab от Flasher. :)

Добавлено: Ср июл 04, 2012 00:41
LonerD
нужно вместо разворачивания изменять размер и положение окна до максимально возможных
Алгоритм представляется следующий: Развернуть окно Тотала, запомнить координаты и ширину-высоту окна, свернуть окно Тотала, убрать заголовок, переместить окно Тотала и его ширину-высоту к запомненным координатам и размерам.
Таким образом можно определить положение панели задач и избежать налезание окна Тотала на неё.

Добавлено: Ср июл 04, 2012 05:32
Flasher
LonerD
Почти. В т.ч.

sa
Ай-яй, какие мы смекалистые.. Без твоего флуда вполне обошлись бы, при том, что именно в контексте этого примера и велось обсуждение..

Добавлено: Ср июл 04, 2012 11:49
LonerD
Почти.
Почти - это частный случай при нижнем расположении панели задач. Если она сверху или сбоку - то такой метод не срабатывает, для этих вариантов - свои частные случаи.
Потому предварительно нужно каким-то образом вычислить координаты и ширину.

Добавлено: Ср июл 04, 2012 11:58
Flasher
LonerD писал(а):Если она сверху или сбоку - то такой метод не срабатывает, для этих вариантов - свои частные случаи.
Мы с MVV ещё на начальных этапах утилиты это обсуждали, всё срабатывало.
LonerD писал(а):Потому предварительно нужно каким-то образом вычислить координаты и ширину.
Для ширины, как и для длины, есть макрос. Координаты также вычисляются. Только зачем?

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