1

Тема: AHK: Логическое "и" и цвет пикселей.

Добрый день!
Проблема состоит в моем непонимании как заставить скрипт выполнятся при соблюдении одновременно 2 условий внутри цикла.


#SingleInstance force
CoordMode Pixel

Loop
{
PixelGetColor, Color, 71, 757
Color1 := Color
PixelGetColor, Color, 169, 785	
Color2 := Color
	If (Color1 <> 0x9d6346) and (Color2 = 0x322F30)
	{
	SoundBeep, 250, 500
	Sleep 1000
	}
	else
	{
	Sleep 1000	
	}
}

F8::
Reload
return

F9::
ExitApp
return

2

Re: AHK: Логическое "и" и цвет пикселей.

Ваш вопрос выражен в форме утверждения, а пример не содержит ошибок.
Что конкретно Вы ожидаете на этот посыл?

3

Re: AHK: Логическое "и" и цвет пикселей.

KusochekDobra
Спасибо, что откликнулись.
Вопрос: как заставить скрипт выполнятся при соблюдении одновременно 2 условий внутри цикла?
Код ошибки явно содержит, т.к. проверяя по отдельности  по заданным координатам скрипт выдает SoundBeep.
Но как только, я объединяю эти 2 условия скрипт звуков уже не издает.
Такое ощущение, что проблема в этой строчке:


If (Color1 <> 0x9d6346) and (Color2 = 0x322F30)

Есть ли возможность выстроить скрит так, чтобы только при выполнении этих 2 условий скрипт выдавал звук?

4

Re: AHK: Логическое "и" и цвет пикселей.

If (Color1 != 0x9d6346) && (Color2 == 0x322F30)

5

Re: AHK: Логическое "и" и цвет пикселей.

Попробуйте такой вариант. Для наглядности, цвета в указанных координатах выводятся в тултипе, а их получение происходит в таймере с интервалом 250 миллисекунд. Точно ли они соответствуют ожиданиям? Так же, учтите, что условие, при котором должен быть "БИП" подразумевает ( (неравенство первому значению = истинно) и (полное соответствие второму = истинно) ).


#SingleInstance force
CoordMode, Pixel
CoordMode, ToolTip

tipPos_x := 100, tipPos_y := 100
GoSub, SearchColor

Loop {
	If (Color1 != 0x9d6346) && (Color2 == 0x322F30) {
		SoundBeep, 1250, 500 
		Sleep 1000
	} else {
		;SoundBeep, 250, 500
		Sleep 1000	
	}
}

F8::
	Reload
return

F9::
	ExitApp

SearchColor:
	PixelGetColor, Color1, 71, 757
	PixelGetColor, Color2, 169, 785
	ToolTip,% Clipboard := Format("Color1 = {}`nColor2 = {}", Color1, Color2),% tipPos_x,% tipPos_y
	SetTimer, SearchColor, -250
return

6 (изменено: stealzy, 2018-12-30 21:08:34)

Re: AHK: Логическое "и" и цвет пикселей.

dmitry-semin пишет:

If (Color1 <> 0x9d6346) and (Color2 = 0x322F30)

KusochekDobra пишет:

If (Color1 != 0x9d6346) && (Color2 == 0x322F30)

KusochekDobra, <> равно !=, and равно &&, = в данном контексте равно ==. Так что это вы зря. И зачем усложнять код таймером, когда цикла достаточно?

dmitry-semin, если сомневаетесь, всегда можно проверить самому:

Color1 := 0x1d6346, Color2 := 0x322F30
If (Color1 <> 0x9d6346) and (Color2 = 0x322F30)
	MsgBox

Можно и короче записать ваш код:

#SingleInstance force
CoordMode Pixel
Loop {
	PixelGetColor Color1, 71, 757
	PixelGetColor Color2, 169, 785	
	If (Color1<>0x9d6346 and Color2=0x322F30)
		SoundBeep 250, 500
	Sleep 1000	
}

F8::Reload
F9::ExitApp

7

Re: AHK: Логическое "и" и цвет пикселей.

KusochekDobra, WindowSPY неверно определял код цвета, раньше не сталкивался с подобным.Вы были правы.
stealzy, постараюсь освоить красивое написание кода)

Спасибо большое!