1

Тема: AHK: Магнит к выбранному пикселю

Приветствую. Подскажите пожалуйста, возможно ли, запоминание пикселя по нажатию кнопки и его отслеживание, то есть когда объект в движение, ахк ввёл курсор за этим цветом, простыми словами - магнит.

2 (изменено: __Михаил__, 2022-05-05 00:09:00)

Re: AHK: Магнит к выбранному пикселю

Это можно сделать через эти команды: 'PixelGetColor ', 'PixelSearch', 'MouseMove'.

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

3

Re: AHK: Магнит к выбранному пикселю



PixelGetColor, Color,  x%i%, y%i% BRG
if Color = x%i%, y%i%
							{
								PixelSearch %color% 
{
								MouseMove, %color% 
}
}

Уверен, что неправильно сделал, но как это увязать?

4

Re: AHK: Магнит к выбранному пикселю

PixelGetColor, color, %MouseX%, %MouseY% 

Думаю, так будет правильнее?!

5

Re: AHK: Магнит к выбранному пикселю

Попробуйте написать нормальный код используя синтаксис из АХК.

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

6 (изменено: isxodnik, 2022-05-11 18:41:44)

Re: AHK: Магнит к выбранному пикселю

Ну, чудес не обещаю...

;запустить скрипт по нажатию мыши
LButton::
;получить координаты
MouseGetPos, GetX, GetY
;получить цвет по координатам
PixelGetColor, Color, GetX, GetY
;переместить курсор
MouseMove, GetX, GetY

;задать координаты для PixelSearch
L := GetX - 100
T := GetY - 100
R := GetX + 100
B := GetY + 100

;запустить это в цикле
Loop
	{
	;поиск цвета вокруг курсора
	PixelSearch, SrchX, SrchY, L, T, R, B, Color, 2, Fast
	;перемещение курсора к найденому пикселю
	MouseMove, SrchX, SrchY
	;переопределение области поиска
	L := SrchX - 100	;числа произвольные.
	T := SrchY - 100	;чем больше область поиска,
	R := SrchX + 100	;тем он медленнее
	B := SrchY + 100
	Sleep, 20
	}

;перезагрузка скрипта
q::Reload

7

Re: AHK: Магнит к выбранному пикселю

Мне кажется, лучше делать скрин экрана через Gdip, и через него уже искать. Мне кажется будет куда быстрее.

Win10: LTSC (21H2); AHK: ANSI (v1.1.36.02)

8

Re: AHK: Магнит к выбранному пикселю

Phoenixxx_Czar пишет:

Gdip

Не первый раз про него слышу, но когда попытался загуглить, наткнулся на такие дебри, которые явно выше моей зарплаты. Не могли бы вы, как человек в теме, дать  некоторую справку?
А пока - дополнение к вышенаписанному коду, выход из цикла при потере точки:

;запустить это в цикле
Loop
	{
	;поиск цвета вокруг курсора
	PixelSearch, SrchX, SrchY, L, T, R, B, Color, 2, Fast
	if (ErrorLevel != 0)	;если цвет не  найден
		{
		i++
		if (i >= 50)	;в течение 1 секунды или более
			break	;то выход из цикла
		continue	;возвращение в начало цикла, чтобы не потерять координаты
		}
	i := ""	;очистка i
	;перемещение курсора к найденому пикселю
	MouseMove, SrchX, SrchY
	;переопределение области поиска
	L := SrchX - 100	;числа произвольные.
	T := SrchY - 100	;чем больше область поиска,
	R := SrchX + 100	;тем он медленнее
	B := SrchY + 100
	Sleep, 20
	}