1 (изменено: solidsnake_fear, 2020-09-21 20:17:07)

Тема: AHK: Как сделать поиск по координатам относительно рабочего стола?

Написал простенький скрипт

#Persistent
Loop
    {
        ImageSearch, FoundX, FoundY, 982, 233, 1421, 530, *104, test.png

        if ErrorLevel = 1
        {
            SoundPlay, ding.wav
            MsgBox, , Attention!, Visitor!
            IfMsgBox, OK, Reload
        }
    
    }

как сделать, чтобы координаты считались всегда относительно рабочего стола, даже если запущено другое окно? А то приходится щелкать по рабочему столу, запускать с него же скрипт и не открывать других окон. Размер рабочей зоны обоих мониторов 3839х1079. Помогите, пожалуйста
Имеется два монитора: 1 - рабочий, 2 - изображение с камер. Суть скрипта в том, что он мониторит изображение с камеры и в случае попадания в поле зрения какого-либо объекта, которого там не было - срабатывает звуковой сигнал, вылетает окошко с оповещением и после нажатия на ОК скрипт возвращается в начало. В моем случае это сделано для того, чтобы система реагировала на человека. Скрипт работает исправно, однако работает он только если не открывать других окон, так как координаты он начинает считать относительно активного окна. Я погуглил и нашел Coordmode. Добавив строчки, скрипт успешно запускается, но не работает как нужно. Он всегда будто находит картинку, даже если в поле зрения камеры появится объект. Если убрать Coordmode и запустить скрипт с рабочего стола - все работает исправно. Подскажите, что не так:

#Persistent
Loop
    {
CoordMode Pixel        
ImageSearch, FoundX, FoundY, 982, 233, 1421, 530, 1920, 1080, *104, test.png

        if ErrorLevel = 1
        {
            SoundPlay, ding.wav
            MsgBox, , Attention!, Visitor!
            IfMsgBox, OK, Reload
        }

    }

как сделать, чтобы координаты считались всегда относительно рабочего стола, даже если запущено другое окно? Размер рабочей зоны обоих мониторов 3839х1079. Сам скрипт работает, но приходится запускать его с рабочего стола и ни в коем случае не открывать другие окна.

2

Re: AHK: Как сделать поиск по координатам относительно рабочего стола?

solidsnake_fear пишет:

Я погуглил и нашел Coordmode. Добавив строчки, скрипт успешно запускается, но не работает как нужно.

CoordMode никак не влияет на поиск, только на точку отсчёта координат.

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

3

Re: AHK: Как сделать поиск по координатам относительно рабочего стола?

teadrinker пишет:

CoordMode никак не влияет на поиск, только на точку отсчёта координат.

Да, уже понял. Coordmode надо писать в начале скрипта.

CoordMode, Pixel, Screen
CoordMode, Mouse, Screen

Loop
	{
		Sleep, 500
		ImageSearch, foundX, foundY, 982, 233, 1421, 530, *70, test.png

		if ErrorLevel = 1
		{
			Sleep, 500
			SoundPlay, ding.wav
			MsgBox, , Attention!, Visitor!
			IfMsgBox, OK, Reload
		}
	
	} 

Нашел на забугорном форуме что-то подобное, у человека была подобная проблема, из-за того, что он не прикрепил курсор к экрану при помощи CoordMode, Mouse, Screen. Сделал точно так же и все равно проблема осталась. Не понимаю как указать скрипту точку отсчета рабочий стол при любых условиях.

4

Re: AHK: Как сделать поиск по координатам относительно рабочего стола?

с двумя мониторами будет проблема, с таким тоже сталкивался. Для решения проблемы где-то на офф форуме нашел самописную функцию для поиска пикселей/изображений, работающую с 2-мя мониторами. В итоге мне удобнее было просто отказаться от использования 2-ого моника для скрипта и обойтись одним монитором.

5

Re: AHK: Как сделать поиск по координатам относительно рабочего стола?

Botsy Да тут проблема не в двух мониторах, а в том, чтобы координаты не слетали при открытии нового окна, так как он ведет отсчет именно от активного окна.

6 (изменено: Botsy, 2020-09-25 01:23:28)

Re: AHK: Как сделать поиск по координатам относительно рабочего стола?

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

7

Re: AHK: Как сделать поиск по координатам относительно рабочего стола?

Botsy
Так в том-то и дело, что изображение искомое ничего не перекрывает, его всегда видно на втором мониторе.

8 (изменено: Botsy, 2020-09-25 01:23:37)

Re: AHK: Как сделать поиск по координатам относительно рабочего стола?

solidsnake_fear выше пост писал про два монитора... Если думаешь что проблема не в нем, отключи его и проверь действие с одним монитором.

9

Re: AHK: Как сделать поиск по координатам относительно рабочего стола?

Botsy

Окей, завтра на работе попробую. Его прям отключить или просто то же самое смоделировать просто в пределах одного монитора?

10

Re: AHK: Как сделать поиск по координатам относительно рабочего стола?

solidsnake_fear отключить, чтобы винда не определяла его.

11

Re: AHK: Как сделать поиск по координатам относительно рабочего стола?

Botsy пишет:

solidsnake_fear отключить, чтобы винда не определяла его.

В общем, он ищет картинку без съезжания координат даже если включен второй монитор, НО только на первом мониторе, то есть на основном. У тебя не осталось того скрипта для двух мониторов? Отказаться от дополнительного не могу

12

Re: AHK: Как сделать поиск по координатам относительно рабочего стола?

В общем я разобрался. Вбил абсолютные координаты, которые узнал при помощи Window Spy, добавил CoordMode Pixel в начало скрипта и все заработало.
Новый код:

ExitApp := "+F12"
Hotkey, %ExitApp%, Exit

CoordMode Pixel

;//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Sleep, 500

Loop
	{
		Sleep, 500
		ImageSearch, foundX, foundY, -825, 403, -517, 515, *70 test.png

		if ErrorLevel = 1
		{
			Sleep, 250
			SoundPlay, ding.wav
			MsgBox, , Attention!, Visitor!
			IfMsgBox, OK, Reload
		}

	
	}

	
	
Exit:

ExitApp	

13 (изменено: Botsy, 2020-09-25 01:23:45)

Re: AHK: Как сделать поиск по координатам относительно рабочего стола?

solidsnake_fear о надо запомнить твой способ.

14

Re: AHK: Как сделать поиск по координатам относительно рабочего стола?

Botsy, проставьте точки в конце предложений.