Т.е. несрабатывание fs3_0 (псевдополного экрана) из развёрнутого окна устраивает? Ну, ладно. Все счастливы.HA3APET писал(а):Меня вполне устраивает
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое
Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер
Странный выбор. Получается, что если окно развернуто, то кнопка будет выполнять fs3_1, включая все элементы окна...HA3APET писал(а):Меня вполне устраивает:Код: Выделить всё
/d=5 /ef "run_action(fs3_0), test(hasCaption && !isMaximized) | run_action(fs3_1)" fs3_0=c0 cl0 db0 tb0 sb0 kb0 th0 t1 m1 fs3_1=c1 cl1 db1 tb1 sb1 kb1 th1 t0 m0
Они-то не запишутся, а вот команда m1 запишет в откат команду m0, только если окно еще не развернуто. А в полноэкранном режиме уже нажать кнопку разворачивания/восстановления окна не удастся - её там тупо не будет.Flasher писал(а):Там всё утыкается в использование стандартных кнопок управления окном, нажатия которых никак в undo не запишутся.MVV писал(а):Чтобы восстанавливаться в правильный режим, надо использовать историю отката
Это она потом уже запишет при вызове TCFS2. Считается значение из undo, в то время как режим сменился по стандартной кнопке "Равернуть/Восстановить", поэтому срабатывать как надо будет не всегда и не с первого раза.MVV писал(а):а вот команда m1 запишет в откат команду m0, только если окно еще не развернуто.
Пусть fs3=c0 m1, будем запускать следующую команду:
Если окно не развернуто:
1. Вызов c0 m1 скрывает заголовок, разворачивает окно и пишет в откат c1 m0.
2. Повторный запуск команды запустит откат, т.к. заголовок скрыт, и восстановит окно.
Если окно развернуто:
1. Вызов c0 m1 скрывает заголовок и пишет в откат c1.
2. Повторный запуск команды запустит откат и включит заголовок, не восстанавливая окно.
В обоих возможных случаях после второго запуска окно останется в том состоянии, в котором было до первого запуска. Но панель задач во втором случае скрываться не будет, т.к. заголовок скрывается после разворачивания. А если немного извратиться, можно устранить и эту проблему:
Здесь show(9)+show(3) нужны для имитации разворачивания окна, чтобы система скрыла панель задач (в откате от них не прибавится), а run_item(rm1pm) нужна для обновления окна после включения/выключения заголовка (замечу, rm1pm пишет себя же в откат, поэтому при откате выполнится автоматом).
Код: Выделить всё
TCFS2 /ef "run_action(fs3) save_undo(fs3_undo), test(hasCaption) | run_action(fs3_undo)"1. Вызов c0 m1 скрывает заголовок, разворачивает окно и пишет в откат c1 m0.
2. Повторный запуск команды запустит откат, т.к. заголовок скрыт, и восстановит окно.
Если окно развернуто:
1. Вызов c0 m1 скрывает заголовок и пишет в откат c1.
2. Повторный запуск команды запустит откат и включит заголовок, не восстанавливая окно.
В обоих возможных случаях после второго запуска окно останется в том состоянии, в котором было до первого запуска. Но панель задач во втором случае скрываться не будет, т.к. заголовок скрывается после разворачивания. А если немного извратиться, можно устранить и эту проблему:
Код: Выделить всё
TCFS2 /ef "if(isMaximized, run_action(fs3)+show(9)+show(3), run_action(fs3)) run_item(rm1pm) save_undo(fs3_undo), test(hasCaption) | run_action(fs3_undo)"Значит, что последовательность выполнения должна соответствовать написанному, например:MVV писал(а):В смысле между вызовами? Как ты себе это представляешь?
/ei команда1 /p=5000 команда2 /ef функция1 /p=10000 /ea действие1 /p=3000 /ef функция2.
Но в данном случае лучше не мс указывать, а дс. И, конечно, имелись в виду не только команды, но и функции/действия.
В смысле? Что спускать?MVV писал(а):Как с паузы-то спускать?
Она ничего подобного не позволяет, действует только один раз перед запуском, да и большие значения игнорируются.MVV писал(а):Чем не устраивает функция delay?
Я наверное что-то неправильно делаю, что оно у меня работает?
А если добавить команду dsleep=delay(#1*100) в секцию [Items], то получатся дс, а не мс, и вызывать можно будет через команды, а не через функции:
Код: Выделить всё
TCFS2.exe /ef delay(2000) run_item(m2) delay(3000) run_item(m2) delay(4000) run_item(m2) delay(2000) run_item(m2)А если добавить команду dsleep=delay(#1*100) в секцию [Items], то получатся дс, а не мс, и вызывать можно будет через команды, а не через функции:
Код: Выделить всё
TCFS2.exe /ei dsleep(20) m2 dsleep(30) m2 dsleep(40) m2 dsleep(20) m2
Последний раз редактировалось MVV Вт авг 23, 2011 16:11, всего редактировалось 2 раза.
ask-rus:
Это убирается крайне легко (на дельфи):Первым делом это пишу в неграфических, но не консольных прогах своих.
MVVПроверил её, работает. Минус в том, что на курсоре мыши возникают песочные часики.
Это убирается крайне легко (на дельфи):
Код: Выделить всё
Var dummymsg: TMsg;
...
PostMessage(0, 0, 0, 0);
GetMessage(dummymsg, 0, 0, 0);Спасибо за идею, добавил в начале функции main:
С функцией PeekMessage тоже "занятой" курсор исчезает, но она, в отличие от GetMessage, не зависает, если в очереди потока нет сообщений.
Код: Выделить всё
{
MSG msg;
PostMessage(0, 0, 0, 0);
PeekMessage(&msg, 0, 0, 0, 0);
}