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

Помощь в написании скриптов
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: 2340
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: 2340
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 =================================

Return to “Помощь”

Who is online

Users browsing this forum: No registered users and 4 guests