1

Тема: AHK: При виде картинки в области идет нажатие клавиши

У меня на экране появляется в определённых координатах картинка. Картинки которые нужно найти на экране находятся в папке.
Допустим я активирую скрипт и те картинки которые в папке появляются на экране происходит действие.
Пример: На экране появилась картинка ПКМ вот он среагировал на нее и нажал ПКМ.

Вот еще один пример:
Есть такая задачка, мне нужно чтобы в окне приложения постоянно шел поиск определенных картинок и при нахождении просто нажималась определённая клавиша на нее.
Допустим есть 3 картинки СКМ.png, ПКМ.png и ЛКМ.png. Скрипт ищет любую из них и при нахождении просто прожимает СКМ, ПКМ и СКМ, дальше продолжает искать.
Буду крайне благодарен, если кто-то захочет поделиться мудростью.

2

Re: AHK: При виде картинки в области идет нажатие клавиши

Для нахождения одной картинки следующий код:

File_name = File_name.png

ImageSearch, Coordinate_X, Coordinate_Y, 0, 0, A_ScreenWidth, A_ScreenHeight, *60 %A_WorkingDir%\%File_name%
if ErrorLevel = 2 
{
 MsgBox, 8256, ERROR, Не удалось провести поиск. Отсутствует файл %File_name%
}
else if ErrorLevel = 0
{
 MsgBox, 8256, ERROR, Картинка найдена на экране. Координаты: %Coordinate_X%, %Coordinate_Y%
}
else if ErrorLevel = 1
{
 MsgBox, 8256, ERROR, Картинка не найдена на экране.
}
Return
Win10x64, AHK v1.1.37.01 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101

3

Re: AHK: При виде картинки в области идет нажатие клавиши

в filename  я должен вставить вот это как я понял?
C:\Users\HomePC\Desktop\gug\TytFoto\C.png __Михаил__

4

Re: AHK: При виде картинки в области идет нажатие клавиши

Kenich
Нет, только название файла, при условии, что файл находится в одной папке со скриптом.

Если это не так (файл находится в другом месте) замените строку:

ImageSearch, Coordinate_X, Coordinate_Y, 0, 0, A_ScreenWidth, A_ScreenHeight, *60 %A_WorkingDir%\%File_name%

на эту:

ImageSearch, Coordinate_X, Coordinate_Y, 0, 0, A_ScreenWidth, A_ScreenHeight, *60 %File_name%

В которой будет указан весь путь к нужной картинке для поиска.

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

5 (изменено: __Михаил__, 2020-06-22 02:07:08)

Re: AHK: При виде картинки в области идет нажатие клавиши

Kenich

F2 - Запуск
F6 - Выключить
List - Переменная, содержит имена файлов для поиска

; Путь, где хранятся картинки для поиска:
Dir = C:\Users\HomePC\Desktop\gug\TytFoto\

; Список где названия картинок с расширением, в качестве делителя строки будет символ '-'
List = СКМ.png-ПКМ.png-ЛКМ.png-Y.png

; Время ожидания перед очередным поиском картинок: (указываем в мс)
Time :=	5000		; 5 секунд
;Time := 1000*	15	; 15 секунд (можно так)
Return



; F2 - Кнопка запуска таймера, который будет запускать метку 'Search' каждое 'Time' время:
F2::
SetTimer, Search, %Time%
Return

; F6 - Кнопка выключения таймера
F6::
SetTimer, Search, Off
ToolTip, Поиск картинок выключен.
Sleep, 3000
ToolTip
Return


Search:
Loop, parse, List, -
{
 File_Name := A_LoopField
 ImageSearch, Coordinate_X, Coordinate_Y, 0, 0, A_ScreenWidth, A_ScreenHeight, *60 %Dir%\%File_Name%
 If ErrorLevel = 0	; Если картинка найдена:
 {
  MouseMove, %Coordinate_X%, %Coordinate_Y%, 0		; Переместить мышь на картинку
  ToolTip, Найдена: %File_Name%`nПозиция: %Coordinate_X%`, %Coordinate_Y% ,0,0
  Sleep, 1000

; Кнопки, что будут нажиматься: (определение по названию файла - добавить остальные)
  If File_Name = СКМ.png
   Send, {MButton}
  Else If File_Name = ПКМ.png
   Send, {RButton}
  Else If File_Name = ЛКМ.png
   Send, {LButton}
  Else If File_Name = Y.png
   Send, Y


  ToolTip
  Return
 }
 If ErrorLevel = 2
 {
  MsgBox, 8256, ERROR: Ошибка поиска, Не удалось провести поиск. Отсутствует файл %File_name%
  Return
 }
 Else if ErrorLevel = 1
 {
  ToolTip, Картинка %File_name%`nне найдена ,0,0
  Sleep, 1000
  ToolTip
 }

}
Return

Данный код очень колхозный. При желании можно облегчить 'жизнь' скрипту - указать координаты поиска в текущем окне, заменив переменные 0, 0, A_ScreenWidth и A_ScreenHeight на необходимые пределы поиска.

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