1 (изменено: ignor31, 2014-06-27 05:38:21)

Тема: Клики по очереди

Доброго времени суток, подскажите пожалуйста использую код 




x::
        {
        PixelSearch, Px, Py, 0, 0, %A_ScreenWidth%, %A_ScreenHeight%, 0x01CD01, 0, fast
        Click, %Px%, %Py%
        
        }
return

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

ps: делать надо клики по зеленым лужам на скриншоте .

2 (изменено: Malcev, 2014-06-27 11:22:02)

Re: Клики по очереди

Используйте цикл.

x::
ErrorLevel = 0
n = 1
while (!ErrorLevel)
{
   PixelSearch, Px%n%, Py%n%, 0, 0, %A_ScreenWidth%, %A_ScreenHeight%, 0x01CD01, 0, fast
   n++
}
while (A_index < n)
   Click, % Px%A_index% ", " Py%A_index%
return

3

Re: Клики по очереди

Malcev .
Ваш код не помог .. делает тоже самое только еще и зависает... может я вас не правильно понял и должен был что-то дописать .. но код в таком виде не робит.  прошу помощи...

4 (изменено: Malcev, 2014-06-28 15:08:55)

Re: Клики по очереди

Возможно, находит слишком много совпадений.
Посмотрел на картинку - используйте ImageSearch.

5

Re: Клики по очереди

Доброго времени суток еще раз.
Написал код используя ImageSearch, но мне не как не приходит в голову как написать последовательность кликов по результатам. Дело в том что после клика объект не пропадает..  пока писал это , пришла в голову мысль.. Сканирования  экрана на наличие искомого изображения , запись кординат далее клики по ним. Помогите Осуществить

6

Re: Клики по очереди

пока писал это , пришла в голову мысль.. Сканирования  экрана на наличие искомого изображения , запись кординат далее клики по ним. Помогите Осуществить

Во втором посте уже осуществлена.

7

Re: Клики по очереди

Malcev пишет:

Во втором посте уже осуществлена.

Возможно, но не 2ой пост не тот же код с ImageSearch не дают результата..

8

Re: Клики по очереди

Значит что-то неправильно делаете.

9 (изменено: serzh82saratov, 2014-07-05 19:22:41)

Re: Клики по очереди

ignor31 пишет:

Дело в том что после клика объект не пропадает..

Malcev пишет:

Во втором посте уже осуществлена.

Сомневаюсь что этот код как то может решить вопрос.

x::
ErrorLevel = 0
n = 1
while (!ErrorLevel)
{
   PixelSearch, Px%n%, Py%n%, 0, 0, %A_ScreenWidth%, %A_ScreenHeight%, 0x01CD01, 0, fast
   n++
}
while (A_index < n)
   Click, % Px%A_index% ", " Py%A_index%
return
ignor31 пишет:

Написал код используя ImageSearch

Вы уверены что оно будет в принципе находить все такие зелёные пятна, обратите внимание что они все неоднородны.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

10 (изменено: serzh82saratov, 2014-07-06 20:09:15)

Re: Клики по очереди

Если представить что картинки всё же одинаковые, то Я например, в такой казалось бы тривиальной задаче, не вижу другого способа, кроме как "прикрывать" найденные картинки для поиска следующей.
Необходимые для работы кода картинки, в аттаче.


Gui -DPIScale -Caption +HWNDhGui
Gui Margin, 0, 0
Gui Add, Picture, vPicture, C:\Users\sergey\Desktop\Новый точечный рисунок.bmp
Gui Show, x0 y0

1::
    Gui 2: -Caption +AlwaysOnTop +E0x08000000 +E0x20 +Lastfound -DPIScale 
    DllCall("Dwmapi\DwmIsCompositionEnabled", "UInt*", isEnabled)
    If isEnabled
    {
        Gui 2: Color, 000000
        WinSet, TransColor, 000000 250
    }
    Gui 2: Show, NA x0 y0 w%A_ScreenWidth% h%A_ScreenHeight%
    coords := [], prY := y1 := 0 
    Loop
    {
        ImageSearch, mX, mY, 0, y1, A_ScreenWidth, A_ScreenHeight, C:\Users\sergey\Desktop\tz.bmp
        If ErrorLevel
            Break
        Gui 2: Add, Progress, % "x" mX " y" mY " h" 11 " w" 20 " BackgroundD27429F"
        coords[A_Index] := [mX, mY], y1 := mY > prY ? mY : y1, prY := mY 
        Sleep -1 
    } 
    Gui 2: Destroy 
    For k, v in coords
        Click % v[1]+10 " " v[2]+5
    Return

АП:
На Win 7 работает только с включенным Аеро, пока сам не знаю почему так.

АП:
С выключенным Аеро работает, если, как ни странно, удалить эти строки

    Gui 2: Color, 000000
    WinSet, TransColor, 000000 250

АП:
Поправил код, чтобы учитывалось Аеро.

АП:

"прикрывать" найденные картинки

Но лучше наверное, такие "нашлёпки" делать с помощью GDI.

Post's attachments

Desktop.rar 3.66 kb, 19 downloads since 2014-07-05 

You don't have the permssions to download the attachments of this post.
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

11 (изменено: serzh82saratov, 2016-05-02 13:34:54)

Re: Клики по очереди

не вижу другого способа, кроме как "прикрывать" найденные картинки для поиска следующей.

Хотя нет, появилась такая идея:


#SingleInstance Force
#Persistent
#NoEnv
ListLines Off
SetBatchLines -1
CoordMode, Pixel
CoordMode, Mouse

Gui -DPIScale -Caption +HWNDhGui
Gui Margin, 0, 0
Gui Add, Picture, vPicture, Новый точечный рисунок.png
Gui Show, x100 y100 w1300 h725

1:: 
	For k, v in SeveralSearch(100, 100, 1300, 725, "tz.bmp")
		Click % v[1]+10 " " v[2]+5
	Return

SeveralSearch(ix1, iy1, w, h, file)  {
	x1 := ix1, y1 := iy1, x2 := ix1 + w - 1, y2 := iy1 + h - 1
	prY := y2, ErrorCount := 0, Coords := []
	Loop
	{
		ImageSearch, mX, mY, x1, y1, x2, y2, %file%
		If (ErrorLevel && ++ErrorCount > 1)
			Break
		If (mY = "" || mY > prY)
			x1 := ix1, y1 += 1, prY := y2
		Else
			x1 := mX + 1, ErrorCount := 0, y1 := mY, prY := mY, Coords.Push([mX, mY])
	}
	Return Coords
}
 
Esc::
	ExitApp

Картинки с предыдущего поста.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

12 (изменено: serzh82saratov, 2016-05-02 13:36:50)

Re: Клики по очереди

Вы уверены что оно будет в принципе находить все такие зелёные пятна, обратите внимание что они все неоднородны.

Вообщем с такой картинкой, на вашей находит.

+ code

#SingleInstance Force
#Persistent
#NoEnv
ListLines Off
SetBatchLines -1
CoordMode, Pixel
CoordMode, Mouse

Gui -DPIScale -Caption +HWNDhGui
Gui Margin, 0, 0
Gui Add, Picture, vPicture, Новый точечный рисунок.png
Gui Show, x100 y100 w1300 h725

1:: 
	For k, v in SeveralSearch(100, 100, 1300, 725, "*49 tz.bmp")
		Click % v[1]+10 " " v[2]+5
	Return

SeveralSearch(ix1, iy1, w, h, file)  {
	StartTime := A_TickCount
	x1 := ix1, y1 := iy1, x2 := ix1 + w - 1, y2 := iy1 + h - 1
	prY := y2, ErrorCount := 0, Coords := []
	Loop
	{
		ImageSearch, mX, mY, x1, y1, x2, y2, %file%
		If (ErrorLevel && ++ErrorCount > 1)
			Break
		If (mY = "" || mY > prY)
			x1 := ix1, y1 += 1, prY := y2
		Else
			x1 := mX + 1, ErrorCount := 0, y1 := mY, prY := mY, Coords.Push([mX, mY])
	}
	MsgBox % "Найдено: " coords.MaxIndex()
        . "`nЗа: " A_TickCount - StartTime "msec"
	Return Coords
}
 
Esc::
	ExitApp
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

13 (изменено: ignor31, 2014-07-06 23:45:18)

Re: Клики по очереди

Последний код  ругается на

For k, v in SeveralSearch(0, 0, 1366, 768, "*49 D:\Search.png")

и предпоследний тоже ... не нонятна=(

14 (изменено: serzh82saratov, 2014-07-07 00:07:29)

Re: Клики по очереди

http://ahkscript.org/download/ahk-install.exe

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

15

Re: Клики по очереди

serzh82saratov, подскажите, пожалуйста, как в Вашем сценарии добавить к поиску ряд изображений вместо одного?