View previous topic :: View next topic |
Author |
Message |
Loopback
Joined: 07 Sep 2009 Posts: 1280
|
(Separately) Posted: Tue Mar 17, 2020 00:14 Post subject: |
|
|
И снова здравствуйте :)
Наконец, новая версия:
Code: | 2.0.8
+ добавлена команда StrPart
+ добавлена команда GetCpuInfo в плагин Sysinfo
|
Также выкладываю тестовую версию нового подплагина, позволяющего назначать на различные элементы главного окна тотала действия мышью. В процессе обновления своей сборки на 9.50 наткнулся на просторах на одну утилитку на Аutoit (rcmenuimg), предоставляющую похожий функционал. На функциональных кнопках она у меня так и не заработала, а там где заработала - работала как-то не очень устойчиво, да еще и лишний процесс в памяти. Но сама идея зацепила, особенно возможность назначить контекстные меню на незадействованные функциональные кнопки.
Предварительный синтасксис:
Code: | ControlSetMouseAction [switches] "" <индекс контрола> <CMD|EMCMD> <команда> |
/R /L /M - соответствующие кнопки мыши, срабатывает на нажатие
/R:U /L:U /M:U - то же, но на отпускание
/R:D /L:D /M:D - даблклик
/W - колесо (в любую сторону)
/W:F - колесо вперед
/W:R - колесо назад
Для всех вариантов возможны модификаторы:
/K:C /K:S /K:A - Ctrl, Shift, Alt
Для колеса как модификаторы также можно использовать другие кнопки мыши
/K:R /K:L /K:M /K:X1 /K:X2
Теоретически, если верить Microsoft, их можно и как комбинацию для других кнопок мыши использовать, но я что-то с трудом такой вариант представляю.
Специальный параметр:
/B:1 - /B:7
Применяется для указания нужной кнопки на нижней панели.
<индекс контрола> - в тотале 9.0, оказывается, появилась возможность быстро, надежно и единообразно для любой битности получать хэндлы элементов окна через сообщение WM_USER+50. Список индексов, найден на ghisler.ch:
Hidden text
1: returns window handle of control: leftlist,
2: returns window handle of control: rightlist,
3: returns window handle of control: active list,
4: returns window handle of control: inactive list,
5: returns window handle of control: leftheader,
6: returns window handle of control: rightheader,
7: returns window handle of control: leftsize,
8: returns window handle of control: rightsize,
9: returns window handle of control: leftpath,
10: returns window handle of control: rightpath,
11: returns window handle of control: leftinfo,
12: returns window handle of control: rightinfo,
13: returns window handle of control: leftdrives,
14: returns window handle of control: rightdrives,
15: returns window handle of control: leftpanel,
16: returns window handle of control: rightpanel,
17: returns window handle of control: bottompanel,
18: returns window handle of control: lefttree,
19: returns window handle of control: righttree,
20: returns window handle of control: cmdline,
21: returns window handle of control: curdirpanel,
22: returns window handle of control: inplaceedit,
23: returns window handle of control: splitpanel,
24: returns window handle of control: leftdrivepanel,
25: returns window handle of control: rightdrivepanel,
26: returns window handle of control: lefttabs,
27: returns window handle of control: righttabs,
28: returns window handle of control: buttonbar,
29: returns window handle of control: buttonbarvertical,
Сначала начал делать "классическим" методом, Class+Instance, но потом обнаружил эту замечательную возможность. Старый метод буду убирать, все элементы главного окна доступны новым методом.
В принципе, интересует, как оно вообще работает на других конфигурациях, нет ли конфликтов. Я тестировал два дня на своей рабочей конфигурации и каких-то проблем не заметил.
Примеры:
Code: | ControlSetMouseAction /R /B:7 "" 17 EMCMD em_tcutils_tcmenupopup %COMMANDER_PATH%\Config\Exit.mnu |
Открывает меню через утилиту TcPopupMenu по правому клику на кнопке выхода в нижней панели.
Code: | ControlSetMouseAction /W:F /K:R "" 7 CMD 570
ControlSetMouseAction /W:R /K:R "" 7 CMD 571 |
Листает колесом историю каталогов при наведении на левую панель размера файлов и нажатой правой кнопке мыши (аналогично встроенной возможности листать историю колесом с зажатым Shift). |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Tue Mar 17, 2020 02:18 Post subject: |
|
|
Loopback
И снова приветствуем. )
Спасибо за запрошенные GetCpuInfo (7 лет, етить-колотить! ) и StrPart! Проверку прошли на ура!
ControlSetMouseAction — неплохая идея. Вероятно, поможет избавиться от парочки резидентных скриптов вроде этого. Может, и с прокруткой табов справится с учётом?
Жаль только что-то посложнее (1, 2) не сделать.
С функц. клавишами, правда, не срастётся, панель у меня убрана за ненадобностью.
К слову, у WM_USER+50 темка имеется.
Мой вопрос видел? А от Avada?
Смотрю, последняя порция правок в help так и не внесена.
/С для 19 команд и /SW_SHOWNOACTIVATE также подвисли в ожидании. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Loopback
Joined: 07 Sep 2009 Posts: 1280
|
(Separately) Posted: Tue Mar 17, 2020 16:56 Post subject: |
|
|
Flasher wrote: |
Спасибо за запрошенные GetCpuInfo (7 лет, етить-колотить! )
|
Сам не ожидал, думал эпопея в прошлом году началась, а оно аж с 13 года
Такая конструкция будет работать, но только для активного окна, так работают команды 3005/3006.
Code: | ControlSetMouseAction /W:F "" 26 CMD 3006
ControlSetMouseAction /W:R "" 26 CMD 3005
ControlSetMouseAction /W:F "" 27 CMD 3006
ControlSetMouseAction /W:R "" 27 CMD 3005
|
Flasher wrote: |
Жаль только что-то посложнее
|
Ну оно и не планировалось как комбайн.
Видел. Просто урезать нельзя. Нечто отдаленно похожее организуется работой с регионами (пример на Autoit), но результат выглядит крайне коряво.
Да и вообще, я уже писал, что у меня давно нет интереса к курочению окон тотала. Последняя версия плагина делалась с расчетом, чтобы больше мне к нему не возвращаться, функционал я считаю исчерпывающим. Вот только не надо было оставлять "простой" режим А режим NARROW теперь совсем всё, можно его убирать.
Для 32 битной версии 9.50 сейчас стандартным можно считать такой вариант:
Code: |
AddCondition /VISIBLE:1 "TButton" 2
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
|
С 64 всё стало сложнее. Тов. Гислер почему-то передумал прятать кнопку "Опции" при открытии прикрепленного окна. Он теперь ее уводит за пределы окна. Соответственно, условие перестало работать. Придется где-то допиливать.
Нет, это кажется в другом месте ошибка: плагин не понимает RedirectSection. В любом случае надо исправить.
Flasher wrote: |
Смотрю, последняя порция правок в help так и не внесена.
|
Вижу только 2 правки от 30 октября, из них одна учтена. Вторая: /QUEUEBTN давно упразднён и не работает в коде.
Flasher wrote: |
/С для 19 команд и /SW_SHOWNOACTIVATE также подвисли в ожидании. |
SW_SHOWNOACTIVATE сделал, в след. версии.
А вот /C потому и подвисли, что "19" команд... куча работы. Да и при ближайшем рассмотрении всё не так просто и очевидно, как может показаться.
Если в команде присутствует числовое значение (StrLeft, StrMid и т.д.) - его при наличии ключа /С можно смело вычислять. В принципе это логично и может сократить лишние Set-ы. Хотя для Sleep и SendCommand - это называется сделать только ради того, чтобы было.
А вот целесообразность использования в командах со строчными значениями (например IniRead, MsgBox, а особенно GetUptime) мне неочевидна. Блок вычисления не работает со строками, т.е. при использовании вычисления теряется возможность конкатенации. Т.е. при любых вычислениях на выходе будет число или True/False.
Тут еще возникает проблема в случае, когда в команде более одного параметра. Какое из них вычислять? Вычислять все будет неправильно. Пример: строка "Button-1" без вычисления вернет "Button-1", а с вычислением "-1", т.к. для арифметической операции строка "Button" воспринимается как 0. Следовательно, придется городить еще какой-то механизм задания вычисляемых параметров. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Tue Mar 17, 2020 19:13 Post subject: |
|
|
Loopback wrote: | Такая конструкция будет работать, но только для активного окна | У меня на TC 9.51 RC5 x32 не завелось. Отключение ScrollTC не помогает.
Loopback wrote: | Ну оно и не планировалось как комбайн. | Но вообще ты подумай над самой фичей с Esc. Может, и без плагина удастся добавить.
Loopback wrote: | Видел. Просто урезать нельзя. | Жаль.
Loopback wrote: | А режим NARROW теперь совсем всё, можно его убирать. | О как. )
Loopback wrote: | Вижу только 2 правки от 30 октября, из них одна учтена. | См. 3 сообщения от 20 и 26 июля.
Loopback wrote: | всё не так просто и очевидно, как может показаться. | А казалось именно так.
Loopback wrote: | Хотя для Sleep и SendCommand - это называется сделать только ради того, чтобы было. | В слипе может быть множитель (коэффициент) для предусловий выполнений без ожидания.
А в SendCommand — сложение и вычитание для сопряжённых (левая/правая либо активная/пассивная панель) индексов команд. В приведённом скрипте с Esc для SendMessage это можно наблюдать. WM_USER+50 тут как раз кстати. Как пример — первые пару условий для Select Case.
Loopback wrote: | А вот целесообразность использования в командах со строчными значениями (например IniRead, MsgBox, а особенно GetUptime) мне неочевидна. | Для IniRead в отличии от IniWrite не столь важно.
MsgBox нужен для отладки. Там смысл расчётов при получении нужного числа для потенциальной вставки формулы в другую команду вполне очевиден.
Аналогично и в отношении получения санти/децисекунд для GetUptime.
Loopback wrote: | Блок вычисления не работает со строками | Я надеюсь, пока не работает. )
Loopback wrote: | Какое из них вычислять? | То, которое после возвращения значений переменных будет иметь только цифры и вычислительные знаки. Или можно придумать какой-то экранный знак (~@$*ℱ) или обёртку из пары знаков (угловые/фигурные скобки, к примеру). _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Loopback
Joined: 07 Sep 2009 Posts: 1280
|
(Separately) Posted: Tue Mar 17, 2020 21:28 Post subject: |
|
|
Flasher wrote: | У меня на TC 9.51 RC5 x32 не завелось. |
Странно, на той же версии работает.
Зачем нужен вариант, который сейчас заведомо не работает корректно в любом варианте? В принципе его можно оставить с пояснением, что только для версий 9.2х, но для новой версии его надо убирать.
Наверно все же лучше сделать для команды ключи типа /920 /950 и т.д., со своими наборами дефолтных настроек, чтобы не возникло неоднозначности.
Flasher wrote: |
См. 3 сообщения от 20 и 26 июля.
|
Да, нашел, там прилично, оказывается. Пример на тот момент был неактуален, не было StrPart. Сейчас всё добавил.
Flasher wrote: | В слипе может быть множитель (коэффициент) для предусловий выполнений без ожидания.
А в SendCommand — сложение и вычитание для сопряжённых (левая/правая либо активная/пассивная панель) индексов команд. В приведённом скрипте с Esc для SendMessage это можно наблюдать. WM_USER+50 тут как раз кстати. Как пример — первые пару условий для Select Case. |
С натяжкой, но допустим.
Flasher wrote: | Для IniRead в отличии от IniWrite не столь важно.
MsgBox нужен для отладки. Там смысл расчётов при получении нужного числа для потенциальной вставки формулы в другую команду вполне очевиден.
Аналогично и в отношении получения санти/децисекунд для GetUptime. |
MsgBox ок.
GetUptime не принимает никаких параметров, тогда был просто разговор, что можно будет добавить, если понадобится. Но вроде и не понадобилось.
Flasher wrote: | Я надеюсь, пока не работает. ) |
Flasher wrote: | То, которое после возвращения значений переменных будет иметь только цифры и вычислительные знаки. Или можно придумать какой-то экранный знак (~@$*ℱ) или обёртку из пары знаков (угловые/фигурные скобки, к примеру). |
Сомнительно, что в обозримом будущем оно будет работать со строками. А пока не будет, нет и смысла изгаляться с текстовыми параметрами. Вычисления в условиях - это уже прикрученный костыль, прикручивать его еще и ко всем параметрам... Ну не предполагался плагин для полноценных вычислений Следующий шаг - только полноценный скриптовый язык, но будет ли он удобен именно для целей автозапуска - ещё вопрос, навскидку, как минимум придется сделать обязательными кавычки для строк и вводить разделитель параметров в командах (запятую).
В общем склоняюсь к тому, чтобы сделать для всех команд с числовыми значениями (Sleep, StrLeft, StrRight, StrMid, StrPart), причем надо подумать, возможно, даже и ключ в таких случаях не нужен - сломаться ничего не должно. Также MsgBox, SetEnv, SendCommand - тут с ключом. Остальное пока нет. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Wed Mar 18, 2020 00:26 Post subject: |
|
|
Loopback wrote: | Странно, на той же версии работает. | Не знаю. У меня просто файловая панель прокручивается, и всё. /K:C или /K:A не помогли. /K:R как модификатор вроде как не годится, т. к. по-любому меню выскочит.
/X1 и /X2 не упомянуты. Поддерживаются?
Loopback wrote: | Наверно все же лучше сделать для команды ключи типа /920 /950 и т.д., со своими наборами дефолтных настроек, чтобы не возникло неоднозначности. | Не, не надо. Вдруг Гислеру приспичит в новой версии опять что-то поменять и сдвинуть, как процессе бет он двигал кнопки. Пусть будет кастомный вариант.
Loopback wrote: | Но вроде и не понадобилось. | Мне подумалось, что логировать будет удобней в более комфортных единицах. В т. ч. в double для секунд.
Loopback wrote: | В общем склоняюсь к тому, чтобы сделать для всех команд с числовыми значениями (Sleep, StrLeft, StrRight, StrMid, StrPart) | StrPos ещё.
Loopback wrote: | Остальное пока нет. | А как же IniWrite, RegWrite и уж точно AddControl, где сплошные числа? _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Loopback
Joined: 07 Sep 2009 Posts: 1280
|
(Separately) Posted: Wed Mar 18, 2020 13:01 Post subject: |
|
|
Flasher wrote: | Не знаю. У меня просто файловая панель прокручивается, и всё. /K:C или /K:A не помогли. /K:R как модификатор вроде как не годится, т. к. по-любому меню выскочит.
/X1 и /X2 не упомянуты. Поддерживаются? |
При наведении на табы - прокручивается панель?
/X1 и /X2 только в виде модификаторов. Можно и как основные добавить, просто мне их проверять не на чем.
Flasher wrote: | Не, не надо. Вдруг Гислеру приспичит в новой версии опять что-то поменять и сдвинуть, как процессе бет он двигал кнопки. Пусть будет кастомный вариант. |
Поздно Кастомный вариант в любом случае никуда не денется. Но было необходимо избавиться от /NARROW, который не применим к новым версиям. Flasher wrote: | StrPos ещё. |
В нем нет числовых значений.
Flasher wrote: | А как же IniWrite, RegWrite |
Code: | <секция> <ключ> [<текст>]
<ключ> <параметр> <тип> <значение> [<значение2>..<значениеN>]
|
Хм, и где здесь числа?
Flasher wrote: | AddControl, где сплошные числа? |
В параметрах плагинов нет возможности вычислений. Пока во всяком случае. А в параметрах со слешами вообще не получится использовать вычисления. |
|
Back to top |
|
|
LonerD
Joined: 04 Jan 2011 Posts: 1168 Location: Донецк
|
(Separately) Posted: Wed Mar 18, 2020 14:55 Post subject: |
|
|
Loopback wrote: | Такая конструкция будет работать, но только для активного окна, так работают команды 3005/3006. |
Работает, но прокручивается только активная панель. Последовательно cmd команды выполнять можно? Наподобие такого:
Code: | ControlSetMouseAction /W:F "" 26 CMD 4001,3006
ControlSetMouseAction /W:R "" 26 CMD 4001,3005
ControlSetMouseAction /W:F "" 27 CMD 4002,3006
ControlSetMouseAction /W:R "" 27 CMD 4002,3005 |
Было бы неплохо иметь возможность временно отключать-включать функционал после запуска тотала.
Например, присвоить вышеуказанной секции какое-то имя и сделать возможность назначать пользовательские команды наподобие:
Autorun_Misc.dll имя_секции ON
Autorun_Misc.dll имя_секции OFF _________________ Win11 x64 Eng | TC DreamLair eternal pre-α |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Wed Mar 18, 2020 15:37 Post subject: |
|
|
Loopback wrote: | При наведении на табы - прокручивается панель? | Ага. Вообще при наведении в окно ТС.
Loopback wrote: | /X1 и /X2 только в виде модификаторов. | /K:X1 и /K:X2 я видел, но это про другое.
Loopback wrote: | Можно и как основные добавить, просто мне их проверять не на чем. | Нужно. Я тебе первой ссылкой пример, которым пользуюсь, скинул.
Loopback wrote: | В нем нет числовых значений. | А в переменную нельзя сделать запись с вычислением?
Loopback wrote: | Хм, и где здесь числа? | Так куча значений/параметров ключей записывается в числовом виде.
Loopback wrote: | А в параметрах со слешами вообще не получится использовать вычисления. | Ясно. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Loopback
Joined: 07 Sep 2009 Posts: 1280
|
(Separately) Posted: Wed Mar 18, 2020 16:39 Post subject: |
|
|
LonerD wrote: | Работает, но прокручивается только активная панель. |
Ну да, я же про это и писал.
LonerD wrote: | Последовательно cmd команды выполнять можно? Наподобие такого: |
Нет, но можно подумать.
LonerD wrote: | Было бы неплохо иметь возможность временно отключать-включать функционал после запуска тотала. |
Вот с этим проблематично. Autorun как бы вообще не предназначался для таких сценариев.
Во-первых, это dll, и в таком варианте ее придется вызывать через exe-враппер (например, тот же rundll32). Во-вторых, естественно, команду нужно как-то передавать в процесс, где загружена рабочая версия dll. Нельзя сказать, что это невозможно, но простых путей тут нет. Flasher wrote: | Нужно. Я тебе первой ссылкой пример, которым пользуюсь, скинул. |
Ну, я не углублялся Ок, поддержку допкнопок добавлю. Flasher wrote: | А в переменную нельзя сделать запись с вычислением? |
В смысле? Разве Set не для этого? Flasher wrote: | Так куча значений/параметров ключей записывается в числовом виде. |
Тем не менее это не делает сами параметры числовыми.
Вообще, тут еще и другая проблема вылезла, с этим вычислительным блоком. В любом случае придется его ковырять, в таком виде это неприемлемо. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Wed Mar 18, 2020 16:58 Post subject: |
|
|
Loopback wrote: | Ну да, я же про это и писал. | Т.е. "не работает". Как если бы строк в конфиге не было.
Loopback wrote: | Ок, поддержку допкнопок добавлю. | Гуд. Только бы ещё завелось это всё.
Кстати, а хэндлы ты получаешь только при запуске плагина? После скрытия/показа компонентов окна ТС они обновятся — и привет.
Loopback wrote: | В смысле? Разве Set не для этого? | Имеется в виду StrPos Name+1 ...
Loopback wrote: | Тем не менее это не делает сами параметры числовыми. | Я о нужде больше. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Loopback
Joined: 07 Sep 2009 Posts: 1280
|
(Separately) Posted: Fri Mar 20, 2020 19:07 Post subject: |
|
|
Бета-версия.
2.0.9 beta
+ в выражениях добавлена поддержка ключевых слов "not", "true", "false"
+ более детальная обработка ошибок в выражениях
+ в выражениях добавлен ключевой символ "&" для конкатенации
+ добавлена возможность вычислений в любом неименованном параметре путем добавления спецсимвола % перед кавычками
+ добавлен новый плагин Tweaks с некоторыми небольшими дополнениями для TC
* ModifyDialogs: удален переключатель /NANRROW для новых версий, в версии TC 9.20-9.21 можно использовать /VER:920N
+ ModifyDialogs: настройки "простого" режима адаптированы под новые диалоги в версии 9.50
- ModifyDialogs: исправлено чтение ShowCopyOptions из секции, перенаправленной с RedirectSection
+ В ShellExec добавлен флаг SW_SHOWNOACTIVATE
В общем, чем лепить кучу /С где надо и где не надо, проще оказалось сделать "вычисляемость" единообразно для всех параметров (не переключателей!). Вычисления производятся при указании % непосредственно перед кавычками. Т.е. вычисления обязательно должны быть в кавычках (внутри для строк можно использовать другие кавычки). Строки внутри вычисляемой строки сейчас нестрогие, т.е. если строка не содержит зарезервированных символов и не является ключевым словом, ее можно не брать в кавычки, хотя это и не очень правильно. Возможно, все же правильнее будет сделать строгие строки.
Для обычных параметров ничего сломаться было не должно, но поскольку возможности выражений теперь расширены, могут быть проблемы в условиях.
Справка пока не обновлялась, т.к. возможны изменения.
Flasher wrote: | Т.е. "не работает". Как если бы строк в конфиге не было. |
Ну не знаю, без этого кода у меня вкладки колесом не переключаются, а с ним да.
Flasher wrote: | Гуд. Только бы ещё завелось это всё.
Кстати, а хэндлы ты получаешь только при запуске плагина? После скрытия/показа компонентов окна ТС они обновятся — и привет. |
Добавил дополнительные кнопки, можешь попробовать (он теперь Tweaks называется). В справке описание (сырое) есть.
Хэндлы получаются при запуске и в процессе работы в случае, если окно полученное ранее не существует. Т.е. должно работать после показа, но я это не проверял. Возможно, надо всегда получать для тех окон, которые могут быть скрыты. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sat Mar 21, 2020 00:22 Post subject: |
|
|
Loopback wrote: | + в выражениях добавлена поддержка ключевых слов "not", "true", "false"
+ более детальная обработка ошибок в выражениях
+ в выражениях добавлен ключевой символ "&" для конкатенации | А можно по примерчику? Not же ты давно добавил.
Loopback wrote: | проще оказалось сделать "вычисляемость" единообразно для всех параметров (не переключателей!). Вычисления производятся при указании % непосредственно перед кавычками. | Т. е. предложение поизгаляться и прикрутить "костыль" силу таки возымело.
Loopback wrote: | т.е. если строка не содержит зарезервированных символов и не является ключевым словом, ее можно не брать в кавычки | Можно конкретизировать по символам и ключевым словам?
Loopback wrote: | Справка пока не обновлялась, т.к. возможны изменения. | И тем не менее новая порция в ЛС от меня последовала (по новинкам — в меньшей степени).
Loopback wrote: | Ну не знаю, без этого кода у меня вкладки колесом не переключаются, а с ним да. | Ещё бы они без этого кода переключались. Ты бы какой отладчик выслал что ли.
Loopback wrote: | Добавил дополнительные кнопки, можешь попробовать | Не, ни в какую плагин не хочет заводиться. Сперва на сортировке проверял:
Code: | ControlSetMouseAction /X1 "" 3 CMD 321
ControlSetMouseAction /X2 "" 3 CMD 322 | Win 7 x32 виртуальная у тебя есть вроде. Посмотри там.
Loopback wrote: | если окно полученное ранее не существует. | Ранее — это на момент запуска плагина? Я же пишу про switch-команды в процессе работы ТС. Нужно всегда получать, конечно. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Loopback
Joined: 07 Sep 2009 Posts: 1280
|
(Separately) Posted: Sat Mar 21, 2020 01:53 Post subject: |
|
|
Flasher wrote: | А можно по примерчику? Not же ты давно добавил. |
Not был, но допустим был только в начале выражения, фактически,он обрабатывался отдельно. Сейчас можно в выражении использовать.
Пример... ну поэкспериментируй с разной арифметикой и выражениями, для чего-то ты же хотел эту возможность? Например, такое должно работать:
Code: |
%'"Pa&ram_" & (%aaa%+1)' --> Pa&ram_2 (при %aaa% = 1)
---
if (%aaa% = 1) and not (%bbb% > 10) then
---
Set num 1
StrPos %"var&(%num%-1)" "abcdefgh" "d"
MsgBox %var0% --> 4
|
Flasher wrote: | Т. е. предложение поизгаляться и прикрутить "костыль" силу таки возымело. |
Ну да, я уже начал было копипастить код для поддержки /C, но быстро стало понятно, что это мазохизм и вообще криво. В любом случае это куда меньший костыль получился. А в этом синтаксисе лучше все равно не получится.
Flasher wrote: | Можно конкретизировать по символам и ключевым словам? |
+-/*=()&<> разделители
and,or,not, true,false - зарезервированные ключевые слова
Flasher wrote: | И тем не менее новая порция в ЛС от меня последовала (по новинкам — в меньшей степени). |
Да, видел, займусь чуть позже.
По новинкам пока вообще не надо, там совсем криво, лишь бы суть понятна была.
Flasher wrote: | Не, ни в какую плагин не хочет заводиться. |
Прошу прощения, забыл здесь упомянуть (в справке уже есть), что синтаксис немного поменялся, неиспользуемый "" убрал. Теперь так:
ControlSetMouseAction /X1 3 CMD 321
Но кстати говоря, именно 3 и 4 скорее всего не заработают, потому что:
Flasher wrote: | Ранее — это на момент запуска плагина? Я же пишу про switch-команды в процессе работы ТС. Нужно всегда получать, конечно. |
Да. Плагин его получает заново, если хэндл, сохраненный при запуске, не существует. Но именно для индексов 3 и 4 (они по-сути виртуальные) так работать не будет. Надо поправить. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sat Mar 21, 2020 03:32 Post subject: |
|
|
Loopback wrote: | Пример... ну поэкспериментируй с разной арифметикой и выражениями | Вот если бы ты не показал, я бы и не понял, что это именно так должно выглядеть.
Loopback wrote: | для чего-то ты же хотел эту возможность? | Какую? Я ни про &, ни про true/false, ни про детальную обработку ошибок ничего не писал.
Code: | %'"Pa&ram_" & (%aaa%+1)' --> Pa&ram_2 (при %aaa% = 1) | А, ты меня не так понял. StrPos Name+1 ... — хотелось не Name1 как новое имя переменной, а %Name% далее должно вернуть <значение позиции + 1>.
Loopback wrote: | но быстро стало понятно, что это мазохизм и вообще криво. | С самого начала так подумал, поэтому удивился твоей реакции. )
Loopback wrote: | что синтаксис немного поменялся, неиспользуемый "" убрал. | Сам не понял, зачем тут лишний пустой параметр.
Loopback wrote: | Но кстати говоря, именно 3 и 4 скорее всего не заработают, потому что: | Цитата — это и есть пояснение? Или ты что-то забыл дописать?
Попробовал на тулбар натравить — результат тот же:
Code: | ControlSetMouseAction /X1 28 CMD 321
ControlSetMouseAction /X2 28 CMD 322 | И тут сразу напрашивается 0 на главное (всё) окно ТС. Сделаешь?
А с учётом появления вычислений в переменных, будет кстати появление динамической переменной с индексом 1000 (WM_USER+50) для выяснения, какой является активная панель (1/2). Пару примеров в скриптах уже приводил. Актуально и для случая с прокруткой табов только в соотв. расположению указателя панели: 28-%var% = 26/27.
По остальному ясно. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|