Бета-версия 2.0.10
+ Tweaks: добавлены новые виртуальные идентификаторы для задания пар активных/неактивных элементов
+ Tweaks: добавлена поддержка зон главного окна (заголовок, меню и т.д.)
+ в выражениях добавлена прямая поддержка команд, возвращающих выражения, в виде: StrPos(["switch",] str, substr)
На этом с обновлением выражений, полагаю, можно закончить, лучше в этом синтаксисе на этом "движке" уже ничего с ними не сделать. Такой путь развития очень напомнил AHK - такая же лапша из команд и функций, в разных условиях задаваемых разными способами (одна из причин, почему я не люблю AHK первой версии). Ну тут уже ничего не поделаешь без полной переделки с потерей совместимости.
Вкратце выглядит сейчас всё так:
Код: Выделить всё
# 1. При использовании выражений в параметрах, можно использовать % непосредственно перед кавычками.
# Содержимое строки будет вычисляться и результат передаваться в параметр.
Set sl 1000
Sleep %'%sl%+500'
# => 1500
# 2. Внутри кавычек для текстовых констант можно использовать кавычки другого типа
Set sl 1000
StrLen var %'"Строка_" & 1'
# var => Строка_1
# 3. В выражениях можно использовать команды Autorun, возвращающие значения,
# в виде StrPos(["switch",] str, substr).
# При таком использовании первый параметр (переменная) не нужен.
# Команды могут быть вложенными.
Set zz " abcdefgh"
MsgBox %"StrLeft(StrTrim(%zz%), 3) & '-' & StrPos(%zz%, 'd') & '-' & (StrPos('123456789', '5'))" "Expr"
# => abc-6-5
# 4. Если в команде ужно использовать переключатели, их можно передать в первом параметре в кавычках через пробел, первым символом в строке должен идти ~, вторым /: "~/S1 /S2" и т.д.
Set zz "AbCdEfxQWERTY"
MsgBox %"StrPos('~/S', %zz%, 'x')" "Case-sens"
# => 7
# 5. В условиях "окавычивать" выражения не нужно, выражения вычисляются по умолчанию
Set zz "snsddxff"
if StrPos('~/S', %zz%, 'x') = 6 then
MsgBox "Yes"
endif
Flasher писал(а):Речь про все текущие в момент кликов хэндлы. И текущий инкремент для 9 текущих пар.
Текущие получались уже в прошлой версии.
В общем, я уже утомился препираться по этому вопросу. Опять больше времени трачу на развернутые ответы, чем на собственно программирование.
Flasher писал(а):Ну, и про 0 для активного окна ТС безотносительно положения указателя мыши ты не ответил.
Есть, можно назначать обработку на разные зоны.
Flasher писал(а):Я думал о добавке 9 индексов, но сперва мне такой вариант показался избыточным. И тебе тогда переменную с индексом придётся отдельно обрабатывать, а не подставлять сразу заданный. Впрочем, хозяин — барин, главное, чтобы работало.
Не всегда то, что кажется избыточным, таковым является: c точки зрения скорости и простоты обработки этот вариант лучший. И не всегда то, что кажется простым, просто на самом деле (это про "переменную" @).
Сейчас код переключения вкладок такой:
#10017 - активная панель вкладок
ControlSetMouseAction /W:R 10017 CMD 3005
ControlSetMouseAction /W:F 10017 CMD 3006
Flasher писал(а):У меня и затенения не происходит. А там не осветление с вдавленностью? Я так понял на скриншоте это ===Separator===.
Вид зависит от темы, на классической вдавленный серый текст, в десятке просто серый. В любом случае пункт неактивный.
Я не знаю, почему у тебя не затеняет. Может меню не видимо при запуске ТС? В таком случае помочь ничем нельзя.