1

Тема: AHK: Поиск части экрана для клика по этой части

Как сделать чтобы по скрину скрипт искал часть картинки на экране ?:rolleyes:

                                                   
                                                   
                                                     
                                                     

2 (изменено: Bobby, 2012-04-12 16:16:35)

Re: AHK: Поиск части экрана для клика по этой части

ImageSearch пробовал?  Осуществляет поиск изображения в области экрана.
А скрин готовый или надо скриптом делать?

3 (изменено: andrew, 2012-04-13 16:02:51)

Re: AHK: Поиск части экрана для клика по этой части

Скрин готовый, например я заскринил, вырезал иконку и чтоб оно кликнуло по ней

ImageSearch, FoundX, FoundY, 40,40, 300, 300, C: \ Documents and Settings \ Admin \ Рабочий 

стол \ Безымянный.bmp
CoordMode Pixel  ; Interprets the coordinates below as relative to the screen rather than 

the active window.
ImageSearch, FoundX, FoundY, 0, 0, A_ScreenWidth, A_ScreenHeight, *Icon3 
if ErrorLevel = 2
    MsgBox Не удалось произвести поиск
else if ErrorLevel = 1
    MsgBox Icon иконка не может быть найден на экране.
else
    MouseMove, %FoundX%, %FoundY%.

кто знает, почему не работает ?

                                                   
                                                   
                                                     
                                                     

4

Re: AHK: Поиск части экрана для клика по этой части

Почемуто всегда высвечивается окно

MsgBox Не удалось произвести поиск
                                                   
                                                   
                                                     
                                                     

5

Re: AHK: Поиск части экрана для клика по этой части

А зачем вы 2 разных примера в один скрипт объединили?

6

Re: AHK: Поиск части экрана для клика по этой части

andrew дополню поясню пост Malcev.
У вас в скрипте два ImageSearch

; Первый
ImageSearch, FoundX, FoundY, 40,40, 300, 300, C: \ Documents and Settings \ Admin \ Рабочий стол \ Безымянный.bmp
; И второй
ImageSearch, FoundX, FoundY, 0, 0, A_ScreenWidth, A_ScreenHeight, *Icon3

ошибка понятна?

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro

7

Re: AHK: Поиск части экрана для клика по этой части

ImageSearch, FoundX, FoundY, 40,40, 300, 300, C: \ Documents and Settings \ Admin \ Рабочий 
 
стол \ Безымянный.bmp
CoordMode Pixel  ; Interprets the coordinates below as relative to the screen rather than 
if ErrorLevel = 2
    MsgBox Не удалось произвести поиск
else if ErrorLevel = 1
    MsgBox Icon иконка не может быть найден на экране.
else
    MouseMove, %FoundX%, %FoundY%.

Вот так оставил всёравно не искает

                                                   
                                                   
                                                     
                                                     

8

Re: AHK: Поиск части экрана для клика по этой части

Вообщем если непоняли я хочу, чтоб скрипт искал кнопку Windows, и подводил к ней Курсор

                                                   
                                                   
                                                     
                                                     

9 (изменено: Indomito, 2012-04-13 18:39:34)

Re: AHK: Поиск части экрана для клика по этой части

Теперь ошибка в ImageSearch. Запишите адрес правильно C:\Documents and Settings\Admin\Рабочий стол\Безымянный.bmp
Уберите пробелы и перевод строки -

ImageSearch, FoundX, FoundY, 40,40, 300, 300, C:\Documents and Settings\Admin\Рабочий стол\Безымянный.bmp

ImageSearch, OutputVarX, OutputVarY, X1, Y1, X2, Y2, ImageFile
The names of the variables in which to store the X and Y coordinates of the upper-left pixel of where the image was found on the screen (if no match is found, the variables are made blank). Coordinates are relative to the active window unless CoordMode was used to change that.

Either or both of these parameters may be left blank, in which case ErrorLevel (see below) can be used to determine whether a match was found.

осталось переместить курсор мышки в полученные координаты в OutputVarX и OutputVarY

Самое простое -

ImageSearch, FoundX, FoundY, 40,40, 300, 300, C:\Documents and Settings\Admin\Рабочий стол\Безымянный.bmp
MouseMove, FoundX, FoundY

Правда можно кусор поставить в центр иконки, тогда надо добавить к XY половинные размеры.

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro

10 (изменено: Indomito, 2012-04-13 20:17:36)

Re: AHK: Поиск части экрана для клика по этой части

Как то так:

x1 := 40
y1 := 40
x2 := 300
y2 := 300
vPimg := "C:\Documents and Settings\Admin\Рабочий стол\Безымянный.bmp" 
ImageSearch, FoundX, FoundY, x1,y1, x2, y2, vPimg
if (ErrorLevel) ; пропускает только 0, остальные ошибки считает "Изображение не найдено"
     {
       MsgBox ,0
              , Image search
              , The image  of %vPimg% `n Is not found `n ErrorLevel= %ErrorLevel%
              ,3
      return
     }
FoundX += abs(x1-x2)/2
FoundY += abs(y1-y2)/2
MouseMove, %FoundX%, %FoundY%
return

Для удобства можно оформить как функцию и забыть о проблемах

 fnImgSch(x1,x2,y1,y2
                ,vPht := "C:\Documents and Settings\Admin\Рабочий стол\" ; по умолчанию рабочий стол
                ,vImg )
{
  vPimg := vPht vImg 
  ImageSearch, FoundX, FoundY, x1,y1, x2, y2, vPimg
  if (ErrorLevel) 
return ErrorLevel
  FoundX += abs(x1-x2)/2
  FoundY += abs(y1-y2)/2 
  MouseMove, %FoundX%, %FoundY%
return 0
}

Для рабочего стола вызов будет выглядеть так (например) fnImgSch(40,40,300,300,,"Безымянный.bmp")

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro

11

Re: AHK: Поиск части экрана для клика по этой части

Вообщем если непоняли я хочу, чтоб скрипт искал кнопку Windows, и подводил к ней Курсор

Для рабочего стола вызов будет выглядеть так (например) fnImgSch(40,40,300,300,,"Безымянный.bmp")

andrew, у вас taskbar наверху или сбоку находится?
Если же нет, то измените координаты поиска на те, где находится кнопка windows (посмотреть можно с помощью Autoit3 windows spy.

x1 := 40
y1 := 40
x2 := 300
y2 := 300

Это прямоугольная зона поиска, где x1 := 40
y1 := 40 - координаты верхнего левого угла прямоугольника, а x2 := 300
y2 := 300 - координаты нижнего правого угла прямоугольника.

12 (изменено: andrew, 2012-04-14 16:23:23)

Re: AHK: Поиск части экрана для клика по этой части

Malcev пишет:

Вообщем если непоняли я хочу, чтоб скрипт искал кнопку Windows, и подводил к ней Курсор

Для рабочего стола вызов будет выглядеть так (например) fnImgSch(40,40,300,300,,"Безымянный.bmp")

andrew, у вас taskbar наверху или сбоку находится?
Если же нет, то измените координаты поиска на те, где находится кнопка windows (посмотреть можно с помощью Autoit3 windows spy.

x1 := 40
y1 := 40
x2 := 300
y2 := 300

Это прямоугольная зона поиска, где x1 := 40
y1 := 40 - координаты верхнего левого угла прямоугольника, а x2 := 300
y2 := 300 - координаты нижнего правого угла прямоугольника.

http://rghost.ru/37578307.view
не работает

                                                   
                                                   
                                                     
                                                     

13 (изменено: andrew, 2012-04-14 16:42:16)

Re: AHK: Поиск части экрана для клика по этой части

попробовал изменить картинку на другую, всёравно не ищет, попробовал 2-ou пример вот что вышло Вот скрин

                                                   
                                                   
                                                     
                                                     

14 (изменено: Malcev, 2012-04-14 17:01:35)

Re: AHK: Поиск части экрана для клика по этой части

ImageSearch, x, y, 0, 0, A_ScreenWidth, A_ScreenHeight, C:\Documents and Settings\Admin\Рабочий стол\Безымянный.bmp
if !ErrorLevel
{
   MouseMove, %x%, %y%, 0
   return
}
else
{
   msgbox, Ничего не найдено
   return
}

Картинки на форум вставляются не ссылками, а тагом img
http://higgs.rghost.net/37578541.image

15 (изменено: Indomito, 2012-04-14 17:05:41)

Re: AHK: Поиск части экрана для клика по этой части

andrew а моя ошибка, моё упущение -

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

т.е. надо так

fnImgSch(x1 ,x2 ,y1 ,y2,vImg,vPht = "C:\Documents and Settings\Admin\Рабочий стол\")
{
  vPimg := vPht vImg 
  ;msgbox %vPimg%
  ImageSearch, FoundX, FoundY, x1,y1, x2, y2, vPimg
  if (ErrorLevel) 
return ErrorLevel
  FoundX += abs(x1-x2)/2
  FoundY += abs(y1-y2)/2 
  MouseMove, %FoundX%, %FoundY%
return 0
}

только саму функцию надо переделать, я вначале не понял что ты хочешь.

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro

16

Re: AHK: Поиск части экрана для клика по этой части

Вот всё хорошо, но скрипт ищет только в активном окне, а мне надо, чтоб искал на всём экране
получится так ?

                                                   
                                                   
                                                     
                                                     

17

Re: AHK: Поиск части экрана для клика по этой части

http://www.autohotkey.com/docs/commands/CoordMode.htm

18

Re: AHK: Поиск части экрана для клика по этой части

CoordMode, ToolTip|Pixel|Mouse|Caret|Menu [, Screen|Window|Client]Parameters

т.е. она влияет и на MouseMove и на ImageSearch

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro

19

Re: AHK: Поиск части экрана для клика по этой части

т.е неполучится ?

                                                   
                                                   
                                                     
                                                     

20 (изменено: Indomito, 2012-04-14 17:33:37)

Re: AHK: Поиск части экрана для клика по этой части

Получится Надо только включить, у тебя в посте #3 есть строчка

CoordMode Pixel  ; Interprets the coordinates below as relative to the screen rather than the active window.

вот её и используй.

Прочти ImageSearch

Перевод:
Англ. - "Interprets the coordinates below as relative to the screen rather than the active window." 
Русс. - "Интерпретирует координаты ниже, а по отношению к экрану , а не активного окна."
Это про CoordMode Pixel

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro

21

Re: AHK: Поиск части экрана для клика по этой части

Да, кстати а если картинку png расширения искать небудет ?

                                                   
                                                   
                                                     
                                                     

22

Re: AHK: Поиск части экрана для клика по этой части

прочёл, неполучается, точней пишет ничего не найдено

                                                   
                                                   
                                                     
                                                     

23

Re: AHK: Поиск части экрана для клика по этой части

А какой png формат то? По сути

All operating systems support GIF, JPG, BMP, ICO, CUR, and ANI images (BMP images must be 16-bit or higher).

т.е. должна искать.

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro

24

Re: AHK: Поиск части экрана для клика по этой части

CoordMode, Pixel, Screen
CoordMode, Mouse, Screen
ImageSearch, x, y, 0, 0, A_ScreenWidth, A_ScreenHeight, C:\Documents and Settings\Admin\Рабочий стол\Безымянный.bmp
if !ErrorLevel
{
   MouseMove, %x%, %y%, 0
   return
}
else
{
   msgbox, Ничего не найдено
   return
}

25

Re: AHK: Поиск части экрана для клика по этой части

Незнаю, как у вас, у меня не работает

                                                   
                                                   
                                                     
                                                     

26

Re: AHK: Поиск части экрана для клика по этой части

Не работает где?

27

Re: AHK: Поиск части экрана для клика по этой части

пишет ничего не найдено

                                                   
                                                   
                                                     
                                                     

28

Re: AHK: Поиск части экрана для клика по этой части

А что и где ищите?

29 (изменено: andrew, 2012-04-14 18:08:17)

Re: AHK: Поиск части экрана для клика по этой части

http://rghost.ru/37579900/image.png
http://rghost.ru/37580113/image.png

                                                   
                                                   
                                                     
                                                     

30

Re: AHK: Поиск части экрана для клика по этой части

PatternW:=44 ; ширина шаблона (Безымянный.bmp)
PatternH:=29 ; высота шаблона
Tint:="*20 " ; оттенок
Path:="C:\Documents and Settings\Admin\Рабочий стол\Безымянный.bmp"

Space::
   If !SomeFuncName(X, Y, 0, 0, A_ScreenWidth, A_ScreenHeight, Tint, Path)
      MouseMove, X+PatternW//2, Y+PatternH//2, 25
   Else
      MsgBox,,, % SomeFuncName(X, Y, 0, 0, A_ScreenWidth, A_ScreenHeight, Tint, Path)=1
      ? "Not found!":"Failure to open the image file"
                 . "`nor a badly formatted option!", 1
   Return

SomeFuncName(ByRef OutX, ByRef OutY, X1, Y1, X2, Y2, Variation, FilePath)
{
   ImageSearch, OutX, OutY, X1, Y1, X2, Y2, % Variation . FilePath
   Return, ErrorLevel
}

31

Re: AHK: Поиск части экрана для клика по этой части

Работает, но только в той папке, где и находится этот файл (иконку находит)
Точней в том окне, где найти нужно

                                                   
                                                   
                                                     
                                                     

32 (изменено: Indomito, 2012-04-15 15:25:08)

Re: AHK: Поиск части экрана для клика по этой части

А разве его не нужно было найти в "папке" под названием Рабочий Стол?
P.S. Пока AHK не обладает AI

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro

33

Re: AHK: Поиск части экрана для клика по этой части

Ну так допишите

CoordMode, Pixel, Screen
CoordMode, Mouse, Screen

34

Re: AHK: Поиск части экрана для клика по этой части

А почему используете MouseMove, %FoundX%, %FoundY% ?
Я пользуюсь MouseClick, left,  FoundX,  FoundY

35

Re: AHK: Поиск части экрана для клика по этой части

Т.К Нужен двойной клик

MouseMove, %FoundX%, %FoundY%
click, 2
                                                   
                                                   
                                                     
                                                     

36 (изменено: Indomito, 2012-04-16 13:11:31)

Re: AHK: Поиск части экрана для клика по этой части

andrew пишет:

Т.К Нужен двойной клик

MouseMove, %FoundX%, %FoundY%
click, 2

можно и так

MouseClick, left, %FoundX%, %FoundY%, 2, 0
"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro

37

Re: AHK: Поиск части экрана для клика по этой части

Bobby пишет:

ImageSearch пробовал?  Осуществляет поиск изображения в области экрана.
А скрин готовый или надо скриптом делать?

А что? AHK умеет делать скриншоты заданной прямоугольной области экрана?

38

Re: AHK: Поиск части экрана для клика по этой части

Умеет, и не только это.

39

Re: AHK: Поиск части экрана для клика по этой части

Irbis пишет:

Умеет, и не только это.

А можно поподробней об этом рассказать? В ЭТОЙ теме