Скрипт для поиска и клика по картинке

Помощь в написании скриптов
galyalya
Posts: 1
Joined: 03 Aug 2018, 14:37

Скрипт для поиска и клика по картинке

03 Aug 2018, 15:07

Всем привет.
У меня задача написать скрипт который будет постоянно перезагружать страницу до тех пор пока не найдет изображение и не кликнет на него. После клика скрипт должен сразу же перейти по ссылке указанной в коде и заново начать всю процедуру.

Проблемы в текущем коде (нашел на англоязычном форуме AHK)

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

Code: Select all

F1:: 
SetDefaultMouseSpeed 0

loop {
ImageSearch, foundX, foundY, 0, 0, %A_ScreenWidth%, %A_ScreenHeight%, cns.bmp
Click, %foundX%, %foundY%
}
garry
Posts: 2459
Joined: 22 Dec 2013, 12:50

Re: Скрипт для поиска и клика по картинке

05 Aug 2018, 16:21

Code: Select all

;- базовый пример использования F2
#warn
#NoEnv
SetWorkingDir, %A_ScriptDir%
CoordMode,Pixel,Screen
CoordMode,Mouse,Screen

ur=https://autohotkey.com/boards/images/flags/russia.png
SplitPath,ur, name, dir, ext, name_no_ext, drive
f1=%a_scriptdir%\%name%
ifnotexist,%f1%
  urldownloadtofile,%ur%,%f1%
Gui,add,picture, gA1    ,%f1%
gui,show, x100 y10 w150 h100      ,Use F2 to search Picture
return
esc::exitapp

guiclose:
exitapp

a1:
msgbox, 262208, ,Clicked Picture %name%
return

f2::
ImageSearch,xf,yf,0,0,%a_screenwidth%,%a_screenheight%, *transparentblack %f1%
if ErrorLevel = 2
    msgbox, 262208, ,Could not conduct the search.
else if ErrorLevel = 1
    msgbox, 262208, ,Icon could not be found on the screen.
else
  {
  xf:=xf+10
  yf:=yf+10
  MouseMove,%xf%,%yf%,2
  ToolTip,Here is the picture %name%
  sleep,2500
  tooltip
  MouseClick,left,%xf%,%yf%   ;- click on picture
  }
return
HaMeRoN
Posts: 1
Joined: 30 Jul 2020, 15:50

Re: Скрипт для поиска и клика по картинке

30 Jul 2020, 16:02

@garry
Очень хороший пример! Спасибо.
А можно как то прокручивать сразу много изображений? Кроме как вместо ошибки вставить поиск следующего изображения. есть что то вроде "for"?
Мне надо сразу за цик пробрасывать где то 20 изображений. Или другой вариант, добавить вариацию по цветам и размеру этого изображения, так как исходник 1, но разных цветов и в 3 разных размерах.
garry
Posts: 2459
Joined: 22 Dec 2013, 12:50

Re: Скрипт для поиска и клика по картинке

31 Jul 2020, 01:49

Пример поиска по четырем картинкам
https://www.autohotkey.com/boards/

здравствуйте , нашел, что это
http://ahkey.ru/
http://forum.script-coding.com/viewforum.php?id=13
http://forum.script-coding.com/viewforum.php?id=2

English " Ask for help "
https://www.autohotkey.com/boards/viewforum.php?f=76

Code: Select all

;-------- https://autohotkey.com/boards/viewtopic.php?f=5&t=26342&p=123836#p123836 ---
;- example shows 4 pictures / open https://www.autohotkey.com/boards/
;- maybe add f1a / f3a to 1st and 3th picture name is then wrong so clicks picture-2 AND picture-4
;----------------------------------------------------------------------------
#Warn
#NoEnv
SendMode,Input
SetWorkingDir, %A_ScriptDir%
SetTitleMatchMode,2
SetBatchLines, -1
FileEncoding, UTF-8
Gui,2:default
GUI,2:+AlwaysOnTop
Gui,2: -DPIScale
SS_REALSIZECONTROL := 0x40
Gui,2:Font,s14 ,Lucida console
Gui,2:Color,Black
Gui,2:Color, ControlColor, Black

wa:=A_screenwidth
ha:=A_screenHeight

CoordMode,Pixel,Screen
CoordMode,Mouse,Screen
;-------------------------------------------------------------
i=0
ur1=https://autohotkey.com/boards/images/flags/russia.png
SplitPath,ur1, name1, dir1, ext, name_no_ext, drive
f1 =%a_scriptdir%\%name1%
f1a:=""     ;- wrong name so search next picture

ur2=https://autohotkey.com/boards/images/flags/germany.png
SplitPath,ur2, name2, dir2, ext, name_no_ext, drive
f2 =%a_scriptdir%\%name2%

ur3=https://autohotkey.com/boards/images/flags/china.png
SplitPath,ur3, name3, dir3, ext, name_no_ext, drive
f3 =%a_scriptdir%\%name3%
f3a:=""     ;- wrong name so search next picture

ur4=https://autohotkey.com/boards/images/flags/france.png
SplitPath,ur4, name4, dir4, ext, name_no_ext, drive
f4 =%a_scriptdir%\%name4%


ifnotexist,%f1%
  urldownloadtofile,%ur1%,%f1%
ifnotexist,%f2%
  urldownloadtofile,%ur2%,%f2%
ifnotexist,%f3%
  urldownloadtofile,%ur3%,%f3%
ifnotexist,%f4%
  urldownloadtofile,%ur4%,%f4%

;---------------------------------------------------------------
Gui,2:add,picture, gA1 x10  y10  ,%f1%
Gui,2:add,picture, gA2 x90  y10  ,%f2%
Gui,2:add,picture, gA3 x170 y10  ,%f3%
Gui,2:add,picture, gA4 x250 y10  ,%f4%
gui,2:show, x100 y10 h70 w500 ,F2 to start
return
2guiclose:
exitapp
a1:
msgbox, 262208, ,Clicked Picture %name1%,2
return
a2:
msgbox, 262208, ,Clicked Picture %name2%,2
return
a3:
msgbox, 262208, ,Clicked Picture %name3%,2
return
a4:
msgbox, 262208, ,Clicked Picture %name4%,2
return


f2::
ImageSearch,xf,yf,0,0,500,200,*transblack %f1%    ;- maybe add wrong name for TEST f1a
picx=%name1%
gosub,errorx

ImageSearch,xf,yf,0,0,500,200,*transblack %f2%
picx=%name2%
gosub,errorx

ImageSearch,xf,yf,0,0,%wa%,%ha%,*transblack %f3a%    ;- maybe add wrong name for TEST f3a
picx=%name3%
gosub,errorx

ImageSearch,xf,yf,0,0,%wa%,%ha%,*transblack %f4%
picx=%name4%
gosub,errorx
mousemove,1,1
msgbox, 262208, ,FINISHED
return

errorx:
i++
if errorlevel=1
  {
  msgbox, 262208, ,Error`nTry with next picture in 3 seconds,3
  return
  }
else if errorlevel=2
  {
  msgbox, 262208, ,Picture %picx% not found`nNow continue in 3 seconds with next-picture,3
  return
  }
MouseMove,%xf%,%yf%,
ToolTip,Here is the picture %picx%
sleep,2500
tooltip
MouseClick,left,%xf%,%yf%       ;- click on x-picture
return
;====================== END script =================================
jackiss
Posts: 7
Joined: 04 Sep 2020, 09:16

Re: Скрипт для поиска и клика по картинке

04 Sep 2020, 11:00

Заранее извиняюсь, что пишу просьбу в чужом посте, но у меня не получается создать свой. Всё время вылезает какая то ошибка. Но моя проблема подходит к этой теме поста.
У меня есть скрипт кликера по картинке, и он кликает непосредственно по картинке, а мне нужно, чтобы он кликал на 150 пикселей в право и 200 в верх. Помогите пожалуйста исправить скрипт.

Code: Select all

SysGet, Mon2, Monitor, 2
CoordMode, Pixel, Screen 
  
Loop
{
   ImageSearch, X, Y, 0, 0, %A_ScreenWidth%, %A_ScreenHeight%, C:\ProgramData\SA\picture\bug1.PNG
    ErrorLevel ? 0 : Click(X, Y)	
   sleep, 200
} 

Click(X, Y)  {
    WinGetPos, PosX, PosY, , , % "ahk_id" (hwnd := DllCall("WindowFromPoint", "Int64", X&0xFFFFFFFF|Y<<32))
    ControlClick, % "x" X - PosX " y" Y - PosY, ahk_id %hwnd%,,,, NA
}
jackiss
Posts: 7
Joined: 04 Sep 2020, 09:16

Re: Скрипт для поиска и клика по картинке

05 Sep 2020, 09:22

Всё, уже решил проблему на другом форуме. Кому интересно вот код:

Code: Select all

    ErrorLevel ? 0 : Click(X + 150, Y - 200)
Folko777

Re: Скрипт для поиска и клика по картинке

30 Sep 2020, 15:06

jackiss wrote:
05 Sep 2020, 09:22
Всё, уже решил проблему на другом форуме. Кому интересно вот код:

Code: Select all

    ErrorLevel ? 0 : Click(X + 150, Y - 200)
Интересно какие форумы по AHK еще живые ) На каком вы нашли ответ ?
Kapibara1999

Re: Скрипт для поиска и клика по картинке

15 Nov 2020, 02:02

Folko777 wrote:
30 Sep 2020, 15:06
jackiss wrote:
05 Sep 2020, 09:22
Всё, уже решил проблему на другом форуме. Кому интересно вот код:

Code: Select all

    ErrorLevel ? 0 : Click(X + 150, Y - 200)
Интересно какие форумы по AHK еще живые ) На каком вы нашли ответ ?
а мне можете помочь?) мне надо сделать скрипт который будет на экране видеть кнопки "вверх", "вниз", "в право", "в лево" и нажимать их. Как мне реализовать это на АХК.
Я пока только заскринил все варианты на экране, я видел видео где скрипт понимает какую ему кнопку нажимать, при зарание выбранных для стрелки пикселей, если стрелка в верх, то для нее есть только 3 уникальной точки по углам. Я пока вообще не пойму как скрипт будет находить стрелки на экране если разширение на разных экранах разные(((

Return to “Помощь”

Who is online

Users browsing this forum: No registered users and 1 guest