1

Тема: AHK: Подстановка условия в виде переменной, содержащей строку

в оператор if

Мне нужно, чтобы при одних условиях (по умолчанию) проверялись одни параметры, а при других - другие. Т.е.

e::
;переменная содержит одну строку
var := "Color != 0x4D4DFF && Color != 0x4DFFFF && Color != 0x4DFF4D"

PixelGetColor, Color, x_1, y_1
if (Color = 0x0000FF)			;при соблюдении условия
	var := "Color != 0x4D4DFF"	;переменная получает другую строку

;и подставляется в качестве условия в оператор if
PixelGetColor, Color, x_2, y_2
if (%var%)
	;выполняются команды
	MsgBox, Шеф, усё пропало!

q::reload

Получаю ошибку

Error:  The following variable name contains an illegal character:
"Color != 0x4D4DFF && Color != 0x4DFFFF && Color != 0x4DFF4D"

То есть ещё до подстановки, АНК в принципе не приемлет (у меня) условия в виде строковой переменной. Это лечится?

2

Re: AHK: Подстановка условия в виде переменной, содержащей строку

Здесь переменную не нужно заключать в знаки процента.
Но, похоже, вы думаете, что после подстановки этой переменной будут выполнены команды, которые там записаны текстом?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3

Re: AHK: Подстановка условия в виде переменной, содержащей строку

В АХК нет выполнения строк напрямую.

Win10x64, AHK v1.1.33.09 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101

4 (изменено: isxodnik, 2021-07-06 00:48:30)

Re: AHK: Подстановка условия в виде переменной, содержащей строку

teadrinker пишет:

после подстановки этой переменной будут выполнены команды, которые там записаны текстом?

Такая была мысль, да.

__Михаил__ пишет:

В АХК нет выполнения строк напрямую.

Жаль.

5

Re: AHK: Подстановка условия в виде переменной, содержащей строку

AutoHotkey не умеет выполнять код, который генерируется "на лету". Команды должны быть написаны заранее. Другое дело что эти команды могут вызываться при определённых условиях, и внутри этих команд могут быть прописаны переменные, значение которых генерируется "на лету".