Autorun
Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер
Loopback
У меня пока нет времени на тщательное тестирование новых версий плагина (очень надеюсь заняться этим попозже), но при беглом просмотре новой справки к 2.0.9 beta обратил внимание вот на что.
Для команды ModifyDialogs указаны значения параметра /VER:<версия>:
950 Поддержка для версии TC от 9.50 до 9.51
920 Поддержка для версии TC от 9.20 до 9.21а
Предполагаю, что должно быть не 9.21a, а 9.22a, иначе весь диапазон версий не перекрывается. Если я прав, надо будет уточнить. Это касается и ридми, где прежний диапазон указан и вовсе как 9.20-9.21.
У меня пока нет времени на тщательное тестирование новых версий плагина (очень надеюсь заняться этим попозже), но при беглом просмотре новой справки к 2.0.9 beta обратил внимание вот на что.
Для команды ModifyDialogs указаны значения параметра /VER:<версия>:
950 Поддержка для версии TC от 9.50 до 9.51
920 Поддержка для версии TC от 9.20 до 9.21а
Предполагаю, что должно быть не 9.21a, а 9.22a, иначе весь диапазон версий не перекрывается. Если я прав, надо будет уточнить. Это касается и ридми, где прежний диапазон указан и вовсе как 9.20-9.21.
Даже самая богатая фантазия
Не представит себе наши безобразия.
Не представит себе наши безобразия.
Loopback писал(а):По "/QUEUEBTN" - кнопку "В очередь" необходимо добавлять в любом случае, даже если не планируете ее перемещать, поскольку по ее наличию определяется тип диалога ("Создать ярлык" имеет тот же класс, ох уж эта гислеровская экономия).
А что же теперь делать с диалогом создания ярлыка? У меня там кнопка ОК на следующую наезжает.Loopback писал(а):/QUEUEBTN давно упразднён и не работает в коде.
Что касаемо ControlSetMouseAction /X1|2. Кнопки работают, но только совместно с дефолтным переходом по истории. Поэтому тут требуется ключ переопределения, иначе в таком виде это теряет смысл. Вероятно, это поможет и с прокруткой табов. И в отношении /R нужно сделать нечто, запрещающее вызов контекстных меню.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Да без разницы, возможно и так и этакFlasher писал(а):А, ты меня не так понял. StrPos Name+1 ... — хотелось не Name1 как новое имя переменной, а %Name% далее должно вернуть <значение позиции + 1>.
Я же писал, сначала плагин использовал Class+Instance для получения хэндлов. А потом нашел лучше способ.Flasher писал(а):Сам не понял, зачем тут лишний пустой параметр.
Ну я уже даже не знаю тогда. Варианта только два - либо у тебя тотал < 9.00 (сомневаюсь), либо какие-то другие плагины конфликтуют. У меня на трех разных установках тотала никаких проблем нет.Flasher писал(а):Попробовал на тулбар натравить — результат тот же:
Не особо понял. Переменную сделать можно (либо команду-враппер), но ее значение будет получаться только при загрузке, после уже не поменяешь.Flasher писал(а):А с учётом появления вычислений в переменных, будет кстати появление динамической переменной с индексом 1000 (WM_USER+50) для выяснения, какой является активная панель (1/2). Пару примеров в скриптах уже приводил. Актуально и для случая с прокруткой табов только в соотв. расположению указателя панели: 28-%var% = 26/27.
Возможно, у меня просто не было установленной 9.22, надо будет проверить потом на ней.Avada писал(а):Предполагаю, что должно быть не 9.21a, а 9.22a, иначе весь диапазон версий не перекрывается.
А условия для чего? /QUEUEBTN за ненадобностью была убрана после появления условий.Flasher писал(а):А что же теперь делать с диалогом создания ярлыка? У меня там кнопка ОК на следующую наезжает.
Сейчас актуальный код (который по умолчанию):
[cut]
If %AUTORUN_TCARCH% = 32 Then
AddDialog DIALOG_COPYMOVE
# кнопка TButton1 видима только в диалогах копирования/перемещения
# поставим условие, чтобы исключить диалоги создания ссылки
# и загрузки/выгрузки плагинов и FTP
AddCondition /VISIBLE:1 "TButton" 1
AddControl /X:17 /Y:-74 /W:-20 "TButton" 2
AddControl /X:109 "TButton" 1
AddControl /X:109 "TButton" 3
AddControl /X:109 "TButton" 4
AddControl /X:109 "TButton" 5
AddDialog DIALOG_COPYMOVE_PINNED
AddControl /X:109 "TButton" 1
AddControl /X:109 "TButton" 3
AddControl /X:109 "TButton" 4
AddControl /X:109 "TButton" 5
Else
AddDialog DIALOG_COPYMOVE
AddCondition /EXISTS:1 "Button" 7
AddControl /X:17 /Y:-73 /W:-20 "Button" 3
AddControl /X:109 "Button" 7
AddControl /X:109 "Button" 2
AddControl /X:109 "Button" 6
AddControl /X:109 "Button" 5
AddDialog DIALOG_COPYMOVE_PINNED
AddControl /X:109 "Button" 12
AddControl /X:109 "Button" 7
AddControl /X:109 "Button" 11
AddControl /X:109 "Button" 10
Endif
ModifyDialogs
[/cut]
А, значит всё-таки что-то работает.Flasher писал(а): Что касаемо ControlSetMouseAction /X1|2. Кнопки работают, но только совместно с дефолтным переходом по истории. Поэтому тут требуется ключ переопределения, иначе в таком виде это теряет смысл. Вероятно, это поможет и с прокруткой табов.
Что за ключ переопределения не понял.
Наверно можно, но имхо это не совсем правильно, т.к. фактически нарушает нормальное функционирование программы.Flasher писал(а): И в отношении /R нужно сделать нечто, запрещающее вызов контекстных меню.
Ух ты. А как же эдак сделать?Loopback писал(а):Да без разницы, возможно и так и этак
Я же писал версию ТС — LAST. Проверяется Тотал в почти стирильных условиях, то бишь с одним Autorun из любых плагинов. Поэтому тут ни то, ни другое.Loopback писал(а): Варианта только два - либо у тебя тотал < 9.00 (сомневаюсь), либо какие-то другие плагины конфликтуют.
Что именно?Loopback писал(а):Не особо понял.
Это не годится. Я пишу о динамической. Ты же получаешь хэндлы не только на старте. Вот и эту переменную нужно. Можно её вообще одним символом (без процентов) сделать — @, например:Loopback писал(а):но ее значение будет получаться только при загрузке, после уже не поменяешь.
Код: Выделить всё
ControlSetMouseAction /W:F %"28-@" CMD 3005
ControlSetMouseAction /W:R %"28-@" CMD 3006А, по наличию кнопки F2, торможу. Получилось.Loopback писал(а):А условия для чего?
Закинь в help тогда второй вариант с равными и переставленными (двумя) кнопками для 9.50+ x32:[cut]
Код: Выделить всё
AddDialog /W:-6 DIALOG_COPYMOVE
AddCondition /VISIBLE:1 "TButton" 1
AddControl /X:-3 /W:-3 TMyComboBox 2
AddControl /X:-3 /W:-3 TMyComboBox 1
AddControl /X:-3 TMyCheckBox 2
AddControl /X:1 TMyCheckBox 1
AddControl /X:-3 /Y:-2 /W:-8 TButton 5
AddControl /X:-11 /Y:-2 /W:-8 TButton 1
AddControl /X:-19 /Y:-2 /W:11 TButton 4
AddControl /X:-99 /Y:-2 /W:-9 TButton 2
AddControl /X:95 /Y:-2 /W:12 TButton 3
AddControl /X:1 /W:-4 TMyGroupBox 1
AddDialog DIALOG_COPYMOVE_POST
AddControl /X:1 TBitBtn 1
AddControl /W:-3 TMyComboBox 1
AddDialog /W:-6 DIALOG_COPYMOVE_PINNED
AddControl /X:-3 /W:-3 TMyComboBox 2
AddControl /X:-3 /W:-3 TMyComboBox 3
AddControl /X:-3 TMyCheckBox 2
AddControl /W:-3 TMyComboBox 1
AddControl /X:2 TMyCheckBox 1
AddControl /X:-6 TMyCheckBox 3
AddControl /X:-3 /Y:-3 /W:-8 TButton 5
AddControl /X:-11 /Y:-3 /W:-8 TButton 1
AddControl /X:-19 /Y:-3 /W:11 TButton 4
AddControl /X:95 /Y:-3 /W:12 TButton 3
AddControl /X:1 /W:-4 TMyGroupBox 1
AddControl /X:1 TBitBtn 1Перекрывающий ТС-шное поведение при кликах и встроенных хоткеях. Не знаю, можно ли их сделать неглобальными при этом.Loopback писал(а):Что за ключ переопределения не понял.
Пусть это работает только с применением ключа /K, тогда нарушения не будет.Loopback писал(а):т.к. фактически нарушает нормальное функционирование программы.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
А я себе сделал диалог копирования/перемещения с кнопками, равномерно распределенными по ширине диалога. Win 7 (x64). TC 9.51 RC6 (32-bit).Flasher писал(а):вариант с равными и переставленными (двумя) кнопками для 9.50+ x32
Может кому пригодится:
[cut="Скрины"]


[/cut]
[cut]
AddDialog DIALOG_COPYMOVE
AddControl /X:0 /Y:-1 /W:-11 "TMyComboBox" 2
AddControl /X:0 /Y:-1 /W:-11 "TMyComboBox" 1
AddControl /X:-1 /Y:-1 /W:17 "TButton" 5
AddCondition /VISIBLE:1 "TButton" 1
AddControl /X:17 /Y:-1 /W:17 "TButton" 1
AddControl /X:36 /Y:-1 /W:35 "TButton" 4
AddControl /X:72 /Y:-1 /W:37 "TButton" 3
AddControl /X:-35 /Y:-75 /W:-10 "TButton" 2
AddControl /X:0 /Y:1 "TMyCheckBox" 2
AddControl /X:-79 /Y:1 "TMyCheckBox" 1
AddControl /X:4 /W:-5 "TMyGroupBox" 1
AddDialog DIALOG_COPYMOVE_POST
AddControl /W:-10 "TMyComboBox" 1
AddDialog DIALOG_COPYMOVE_PINNED
AddControl /X:0 /Y:-1 /W:-11 "TMyComboBox" 3
AddControl /X:0 /Y:-1 /W:-11 "TMyComboBox" 2
AddControl /X:-1 /Y:-1 /W:17 "TButton" 5
AddControl /X:17 /Y:-1 /W:17 "TButton" 1
AddControl /X:36 /Y:-1 /W:35 "TButton" 4
AddControl /X:72 /Y:-1 /W:37 "TButton" 3
AddControl /X:0 /Y:1 TMyCheckBox 2
AddControl /X:-79 /Y:1 "TMyCheckBox" 1
AddControl /X:4 /W:-5 "TMyGroupBox" 1
AddControl /W:-10 "TMyComboBox" 1
[/cut]
А я с "неравномерно" то бишь?BeTeP писал(а):А я себе сделал диалог копирования/перемещения с кнопками, равномерно распределенными по ширине диалога.

Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Если объяснишь, какого конкретно результата надо добиться - тогда скажу.Flasher писал(а):росто писать формулу типа %Name+1? Или %(Name+1)? Или %"Name+1"?
ControlSetMouseAction /W:F %"28-@" CMD 3005Flasher писал(а):Это не годится. Я пишу о динамической. Ты же получаешь хэндлы не только на старте. Вот и эту переменную нужно.
Если сделать здесь, будет вычислено значение в момент запуска этой команды. Вычисления вычисляют то что в строке и результат передается в параметр. Всё.
Если я правильно понял, нужно чтобы идентификатор контрола мог меняться в зависимости от результата WM_USER + 1000. Ну можно ключ ввести, какой-нибудь /DEC, который будет вычитать результат (0/1) из идентификатора, заданного в команде. Наверно.
Уже посмотрел, не вижу простого способа. Да и сложного не вижу.Flasher писал(а):Перекрывающий ТС-шное поведение при кликах и встроенных хоткеях. Не знаю, можно ли их сделать неглобальными при этом.
А я разве не объяснил? Ты же на него и ответил "возможно и так".Loopback писал(а):Если объяснишь, какого конкретно результата надо добиться - тогда скажу.
Flasher писал(а):хотелось не Name1 как новое имя переменной, а %Name% далее должно вернуть <значение позиции + 1>.
Тогда объясни это:Loopback писал(а):Если сделать здесь, будет вычислено значение в момент запуска этой команды.
Что мешает в процессе вычислять и с подобной переменной? Сейчас имеется 9 вариантов на 18 хэндлов, где это может пригодиться.Loopback писал(а):Хэндлы получаются при запуске и в процессе работы в случае, если окно полученное ранее не существует.
Если тебе с ключом проще работать, то пожалуйста. Я за оптимальность. Только 1000 даёт не 0/1, а 1/2.Loopback писал(а):Ну можно ключ ввести, какой-нибудь /DEC, который будет вычитать результат (0/1) из идентификатора, заданного в команде. Наверно.
Это, конечно, удручает. Т. е. от /X1 и /X2 можно смело избавляться. Что ж, буду по старинке — через AHK...Loopback писал(а):Уже посмотрел, не вижу простого способа. Да и сложного не вижу.
А про DisableMarkedMenuItems ты что-нибудь расскажешь? Как это выглядит и работает ли с подпунктами?
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Наверно пытался... А я пытался понять, но не смог.Flasher писал(а):А я разве не объяснил?
В процессе чего? В процессе работы скрипта - вычисляется. Как только скрипт передал значение команде, какие еще могут быть вычисления?Flasher писал(а):Что мешает в процессе вычислять и с подобной переменной?
Угу, а я-то, из вредности, против оптимальности.Flasher писал(а):Если тебе с ключом проще работать, то пожалуйста. Я за оптимальность. Только 1000 даёт не 0/1, а 1/2.
Мы сегодня друг друга категорически не понимаем. Я не знаю, как еще объяснять. И я опять перестал понимать, что требуется, а казалось вот-вот. И сделать ничего не могу, пока не пойму. Увы.
Ну да, конечно, раз тебе не нужно - избавляемся.Flasher писал(а): Т. е. от /X1 и /X2 можно смело избавляться.
Если в главном меню будут пункты типа такого:Flasher писал(а):А про DisableMarkedMenuItems ты что-нибудь расскажешь? Как это выглядит и работает ли с подпунктами?
Код: Выделить всё
MENUITEM "`Header", 0Код: Выделить всё
DisableMarkedMenuItems "`"В смысле "не смог"? А "возможно и так" к чему было?Loopback писал(а):А я пытался понять, но не смог.
Код: Выделить всё
StrPos Name-1 abc c
%Name% => 2Я же выше писал, что хэндлы имеет смысл получать только динамически, потому что используются switch-команды во время работы в ТС. Т. е. те, что были на старте, исчезают и возникают новые.Loopback писал(а):Как только скрипт передал значение команде, какие еще могут быть вычисления?
Кстати, ты на вопрос так и не ответил:
Тут хотя бы меняться будет нечему. Т.е. 0 должен дать %AUTORUN_TCHANDLE%, грубо говоря.Flasher писал(а):И тут сразу напрашивается 0 на главное (всё) окно ТС. Сделаешь?
Я свой вариант решения твоему не противопоставлял в данном случае. Это вытекает из условия "Если тебе с ключом проще работать". Разве нет?Loopback писал(а):Угу, а я-то, из вредности, против оптимальности.
Было бы над чем смеяться. Покажи мне хотя бы одного юзера, который будет использовать эти кнопки для своих нужд с абсолютно ненужной ему сменой путей в активной панели (по ходу истории каталогов), нивелируя всю полезность таких кликов. Тогда посмеёмся вместе.Loopback писал(а):Ну да, конечно, раз тебе не нужно - избавляемся.Именно так и поступим.
Под "выглядеть" я имел в виду внешнее отличие (осветление текста или что там) от дефолтного состояния. Так а подпункты можно будет прикрутить, чтобы em_0 не вешать? В верхних пунктах даже не знаю, зачем это может понадобиться.Loopback писал(а):Если в главном меню будут пункты типа такого:
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Код: Выделить всё
StrPos Name-1 abc c
%Name% => 2
Дело не в проще или сложнее, оптимальнее или нет, а потому, что по другому, со всякими "динамическими" переменными в параметрах просто не получится.Flasher писал(а):Я свой вариант решения твоему не противопоставлял в данном случае. Это вытекает из условия "Если тебе с ключом проще работать". Разве нет?
И вообще, какая цель преследуется этим кодом?
Код: Выделить всё
ControlSetMouseAction /W:F %"28-@" CMD 3005
ControlSetMouseAction /W:R %"28-@" CMD 3006
Так они что, эти кнопки глобально работают? Т.е. если нажать не на списках, тоже историю мотает?Flasher писал(а): с абсолютно ненужной ему сменой путей в активной панели (по ходу истории каталогов)
СкринFlasher писал(а):Под "выглядеть" я имел в виду внешнее отличие (осветление текста или что там) от дефолтного состояния. Так а подпункты можно будет прикрутить, чтобы em_0 не вешать? В верхних пунктах даже не знаю, зачем это может понадобиться.
Делаются неактивные все пункты меню (и подменю) в которых в начале текста есть заданный маркер. Маркер при этом из текста удаляется.
Сделал уже. Только не всё окно, а его неклиентская часть, потому что клиентская закрыта контролами.Flasher писал(а):И тут сразу напрашивается 0 на главное (всё) окно ТС. Сделаешь?
Ясно. Ну, уже, собственно, и неважно, с учётом того, что нет акцента на конкретных командах.Loopback писал(а):Нет, такой вариант, разумеется, не работает.
Т. е. с ключом аля /DEC, судя "по другому", получится? Есть же плагины, работающие в динамике, подстраиваясь под изменения контролов, в т. ч. определяя активность панели.Loopback писал(а):по другому, со всякими "динамическими" переменными в параметрах просто не получится.
Спутал индексы. Так:Loopback писал(а):Получается фигня: при вращении колеса над неактивной панелью вкладок переключаются вкладки на активной панели.
Код: Выделить всё
ControlSetMouseAction /W:F %"25+@" CMD 3005
ControlSetMouseAction /W:R %"25+@" CMD 3006 Разумеется. Смотри опять же цитату из сообщения по первой ссылке с примером. Источник обсуждения. Это системная навигация. Аналогично — в проводнике, браузерах и т. д.Loopback писал(а):Так они что, эти кнопки глобально работают? Т.е. если нажать не на списках, тоже историю мотает?
Гм. Я себе это несколько иначе представлял. Т. е. нужно блокировать только пункты с маркером, а не меню, в которых находится хотя бы один такой.Loopback писал(а):Делаются неактивные все пункты меню (и подменю) в которых в начале текста есть заданный маркер.
И желательно искать подстроку не только в начале, но и по всей строке.
Так, что-то у меня не работает.
Код: Выделить всё
DisableMarkedMenuItems "'"Код: Выделить всё
MENUITEM "'F11\tРежим: Полный экран", em_0И что с того, что закрыта? Суть же в том, чтобы зависеть не от положения курсора, а только лишь от активности окна того экземпляра ТС, к которому есть привязка по хэндлу, как в AHK/AutoIt это обычно делается.Loopback писал(а):Только не всё окно, а его неклиентская часть, потому что клиентская закрыта контролами.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Если про ModifyDialogs, то он работает автономно, после того как в него один раз загрузили настройки. Из скрипта после его окончания ничего и нигде не берется. Ни в одном плагине.Flasher писал(а):Т. е. с ключом аля /DEC, судя "по другому", получится? Есть же плагины, работающие в динамике, подстраиваясь под изменения контролов, в т. ч. определяя активность панели.
Так крутит в активной панели, в неактивной не крутит. Но вкладки крутятся в одну сторону вне зависимости от направления колеса.Flasher писал(а):Спутал индексы. Так:
Понятно. Ну если появится мышь с экстракнопками - посмотрю.Flasher писал(а):Это системная навигация. Аналогично — в проводнике, браузерах и т. д.
Я не знаю, что нужно а что нет, делалось под себя, я ее вообще не планировал выкладывать. А нужно было сделать неактивными несколько пунктов с разным текстом в разных подменю. Поскольку в дельфях (на котором написан ТС) обычные идентификаторы меню не задействованы, то нужно было либо искать по индексам (неудобно), либо так.Flasher писал(а):Гм. Я себе это несколько иначе представлял. Т. е. нужно блокировать только пункты с маркером, а не меню, в которых находится хотя бы один такой.
Не вижу ни малейшего смысла - зачем размещать маркер в разных частях строки? Для такой простой задачи только лишнее усложнение.Flasher писал(а):И желательно искать подстроку не только в начале, но и по всей строке.
Добавлено спустя 4 минуты:
Возможно надо задержку перед командой поставить, может меню не загрузилось еще. У меня она строит в конце скрипта и задержка 200мс.Flasher писал(а):Никакой реакции. MNU в UTF-8 без ВОМ. C "`" тоже пробовал.
Плагины ТС имеются в виду. WLX/WFX. Из WDX — TwinKey тот же. Так каков ответ будет? Сделать рельно/нет? Или останется такое псевдорешение с предупреждением "работать будет, если в интерфейсе ничего не трогать"? Для меня, например, это весьма актуально, т. к. кнопки/хоткеи с TCFS2 со сменами вида юзаю на постоянке (F11 из mnu выше как пример). Ну, и не я один такой, само собой.Loopback писал(а):Если про ModifyDialogs
Так это уже косяк плагина, а не конфликт в приёме с вычислением.Loopback писал(а):Но вкладки крутятся в одну сторону вне зависимости от направления колеса.
Не обратил сразу внимания на:Loopback писал(а):зачем размещать маркер в разных частях строки?
В такой ситуации текущее условие годится. Но пока не работает. Стоит первой командой в большом конфиге. После неё там явно больше 200 мс проходит. Поставил 2000 — то же самое. Кодировка точно не влияет?Loopback писал(а):Маркер при этом из текста удаляется.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Я уже запутался в хотелках. Если речь про инкремент результата WM_USER+1000, то да, можно. Но мне не нравится неочевидность работы всего этого, что в твоем варианте (к тому же невозможном), что с ключом. Но поскольку это имеет смысл только для пар, целью чего является определение активного (или неактивного) элемента из пары, более логичным и понятным представляется такой вариант: ввести виртуальные идентификаторы типа 3 и 4, т.е. например для панели табов: 100 - активная панель табов, 101 - неактивная, и т.д.Flasher писал(а):Сделать рельно/нет?
Да, был косяк. Всё работает.Flasher писал(а):Так это уже косяк плагина, а не конфликт в приёме с вычислением.
Кодировка не влияет, т.к. функция работает уже после создания меню. Но в любом случае, функцию можно убирать, или нужно переделывать. Протестировал на новой сборке - оказывается, она не работает с меню со значками, видимо используется кастомная отрисовка. В старой сборке меню было без значков. Элемент затеняется, но маркер не убирается. В таком варианте неприемлемо.Flasher писал(а):В такой ситуации текущее условие годится. Но пока не работает. Стоит первой командой в большом конфиге. После неё там явно больше 200 мс проходит. Поставил 2000 — то же самое. Кодировка точно не влияет?