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

Добавлено: Вт окт 18, 2011 11:41
MVV
В виде ключей неудобно будет - нельзя будет пользоваться из команд.

И что оно из себя представляет? И как работает? Я этого хелпера в глаза ни разу не видел.

Добавлено: Вт окт 18, 2011 11:49
Flasher
MVV писал(а):И что оно из себя представляет?
После включение всё, что происходит в панелях (выделения, навигация, смены режимов просмотра и т.п.), не видно, а видна предшествующая картинка, как будто ничего и не происходит. При выгрузке происходит возврат в обычный режим.

Добавлено: Вт окт 18, 2011 12:15
sa

Добавлено: Вт окт 18, 2011 12:21
Flasher
sa
Какая же это утилита, если это ActiveX компонент на базе COM-технологии? Думаю, с поиском у MVV проблем нет. Добавлю только выкладку из ReadMe:
LockTC [True|False] - блокирует перерисовку основного окна TC во
время работы скрипта. Есть смысл применять при выполнении
скриптов активно меняющих содержание этого окна (выделение
файлов, перемещение фокуса с панели на панель и тп). Более
эстетично, да и работать скрипт будет побыстрее.

Добавлено: Вт окт 18, 2011 14:01
sa
Flasher писал(а):Какая же это утилита, если это ActiveX компонент на базе COM-технологии?
Премного извинений за то, что компонент обозвал утилитой. Надеюсь, что, указав первоисточник, MVV я таки не запутал.

Добавлено: Вт окт 18, 2011 17:43
MVV
Я бы нашёл этот компонент, если бы хотел, но связываться с компонентами желания нет никакого, как минимум из принципа.

А для реализации куда важнее то, как он работает, а этого снаружи не понять.

Пока предложу команду, которая включает или выключает блокировку перерисовки:

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

locktc=msg($0B, #1-0 > 0 ? 0 : 1, 0)
Параметр - 0 или 1. Если не указан, блокировка выключается. :)


Сейчас разобрался, как корректно перерисовать окно без ресайзинга, добавлю функцию в следующем релизе. Если окно тотала при включённой блокировке перекрывалось другими окнами, после снятия блокировки необходимо перерисовывать окно, иначе затертые области так затёртыми и останутся.

Добавлено: Вт окт 18, 2011 17:59
sa
MVV писал(а):Пока предложу команду
Спасибо, работает!

Добавлено: Вт окт 18, 2011 19:54
Flasher
MVV писал(а):но связываться с компонентами желания нет никакого, как минимум из принципа
А никто и не предлагал. :) Это был пример всего лишь.
MVV писал(а):Параметр - 0 или 1. Если не указан, блокировка выключается.
Почему-то при TCFS2 /ef "run_item(locktc(1)) ... run_item(locktc) run_item(rm1pm)" ругается на locktc(1).

Добавлено: Вт окт 18, 2011 23:33
sa
Flasher писал(а):Почему-то при TCFS2 /ef "run_item(locktc(1)) ... run_item(locktc) run_item(rm1pm)" ругается на locktc(1).
Попробуй run_item(locktc, 1) вместо run_item(locktc(1)).

MVV
Вот только как-то напрягает высвечивание поверх тотала иконок других приложений (других копий TC или FireFox, например) когда мышка движется по экрану от кнопки c TCFS2 (видимо при включённой блокировке).
От этого никак не избавиться?
Заметил на этой кнопке

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

TOTALCMD#BAR#DATA
%COMMANDER_PATH%\Addon\TCFS2\TCFS2.exe
/ef "msg($0B, 0) tcm(527) tcm(525) tcm(2053) msg($0B, 1) tcm(524)"
wcmicons.dll,41
Перейти к следующему расширению


-1
при её вызове в каталоге с большим количеством файлов (папка Windows c Ctrl+B, к примеру).

Добавлено: Ср окт 19, 2011 00:55
MVV
Да, если запускаете через run_item, то параметры команд указываются не в скобках, а через запятую.

Я по умолчанию определил и команду, и макрос с вышеописанным содержанием - так можно вызывать locktc без run_item, если из веток функции if:

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

fs2=if(hasCaption, locktc(1) + run_action(fs) + locktc(0) + show(3), show(9) + locktc(1) + run_action(fs_undo) + locktc(0)) redraw()
Почему-то рабочий стол и панель задач не перерисовываются (продолжают показывать скриншот окна тотала), если включать блокировку перерисовки развернутого окна тотала, а выключать - восстановленного. Приходится разворачивать/восстанавливать без блокировки. В качестве redraw пока можно использовать rm1pm, а в следующей версии команда уже будет.

Чтобы не получилось, что блокировка установлена, но не снята (например, в случае ошибок в командах), можно в конец командной строки TCFS2 добавлять /ei locktc(0).

Добавлено: Ср окт 19, 2011 01:31
Flasher
sa писал(а):Попробуй run_item(locktc, 1) вместо run_item(locktc(1)).
Спасибо, так работает.
sa писал(а):высвечивание поверх тотала иконок других приложений (других копий TC или FireFox, например) когда мышка движется по экрану от кнопки c TCFS2 (видимо при включённой блокировке).
Да, неприятная картинка, там не только иконки, но и другие куски интерфейса.
MVV писал(а):Я по умолчанию определил и команду, и макрос с вышеописанным содержанием - так можно вызывать locktc без run_item
Одного макроса недостаточно?

А можно такую функцию сразу к обеим панелям? Я сейчас попробовал подвязать к своему FullScreen, но у меня одна сторона обновилась, а вторая осталась. Не хотелось бы подвязывать определение панели и смену фокуса.
MVV писал(а):можно в конец командной строки TCFS2 добавлять /ef locktc(0).
/ei, наверно?

MVV, а вообще штука приятная, не зря я тему поднял. :)

Добавлено: Ср окт 19, 2011 10:12
sa
sa писал(а):Вот только как-то напрягает высвечивание поверх тотала иконок других приложений
Причём соответствующие этим иконкам кнопки ещё и срабатывают при нажатии...

Добавлено: Ср окт 19, 2011 10:20
MVV
Я уже писал про то, что во время блокировки в окне не перерисовывается ничего, в том числе то, что было перекрыто другими приложениями. Блокируется всё окно тотала целиком. Обновление окна после снятия блокировки как минимум рекомендуется.
Flasher писал(а):
MVV писал(а):Я по умолчанию определил и команду, и макрос с вышеописанным содержанием - так можно вызывать locktc без run_item
Одного макроса недостаточно?
Макрос прямо с командной строки или из действия не вызовешь.

Добавлено: Ср окт 19, 2011 10:28
sa
MVV писал(а):Блокируется всё окно тотала целиком.
Беда в том, что в это время, не желая того, можно "провалиться" в другое приложение и что-то там натворить.
Экспериментировал на /ef "msg($0B, 0) delay(5000) msg($0B, 1)".

Добавлено: Ср окт 19, 2011 10:40
MVV
Ну, это уже не ко мне:) Таковы особенности блокировки.
Если поводить другим окошком по окну тотала, оно вообще сотрется:)