Тема: AHK: Поиск части экрана для клика по этой части
Как сделать чтобы по скрину скрипт искал часть картинки на экране ?:rolleyes:
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Как сделать чтобы по скрину скрипт искал часть картинки на экране ?:rolleyes:
ImageSearch пробовал? Осуществляет поиск изображения в области экрана.
А скрин готовый или надо скриптом делать?
Скрин готовый, например я заскринил, вырезал иконку и чтоб оно кликнуло по ней
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%.кто знает, почему не работает ?
Почемуто всегда высвечивается окно
MsgBox Не удалось произвести поискА зачем вы 2 разных примера в один скрипт объединили?
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ошибка понятна?
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%.Вот так оставил всёравно не искает
Вообщем если непоняли я хочу, чтоб скрипт искал кнопку Windows, и подводил к ней Курсор
Теперь ошибка в ImageSearch. Запишите адрес правильно C:\Documents and Settings\Admin\Рабочий стол\Безымянный.bmp
Уберите пробелы и перевод строки -
ImageSearch, FoundX, FoundY, 40,40, 300, 300, C:\Documents and Settings\Admin\Рабочий стол\Безымянный.bmpImageSearch, 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 половинные размеры.
Как то так:
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")
Вообщем если непоняли я хочу, чтоб скрипт искал кнопку 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 - координаты нижнего правого угла прямоугольника.
Вообщем если непоняли я хочу, чтоб скрипт искал кнопку 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
не работает
попробовал изменить картинку на другую, всёравно не ищет, попробовал 2-ou пример вот что вышло Вот скрин
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
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
}только саму функцию надо переделать, я вначале не понял что ты хочешь.
Вот всё хорошо, но скрипт ищет только в активном окне, а мне надо, чтоб искал на всём экране ![]()
получится так ?
CoordMode, ToolTip|Pixel|Mouse|Caret|Menu [, Screen|Window|Client]Parameters
т.е. она влияет и на MouseMove и на ImageSearch
т.е неполучится ?
Получится
Надо только включить, у тебя в посте #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
Да, кстати а если картинку png расширения искать небудет ?
прочёл, неполучается, точней пишет ничего не найдено
А какой png формат то? По сути
All operating systems support GIF, JPG, BMP, ICO, CUR, and ANI images (BMP images must be 16-bit or higher).
т.е. должна искать.
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
}Незнаю, как у вас, у меня не работает
Не работает где?
пишет ничего не найдено
А что и где ищите?


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
}Работает, но только в той папке, где и находится этот файл (иконку находит)
Точней в том окне, где найти нужно
А разве его не нужно было найти в "папке" под названием Рабочий Стол?
P.S. Пока AHK не обладает AI ![]()
Ну так допишите
CoordMode, Pixel, Screen
CoordMode, Mouse, ScreenА почему используете MouseMove, %FoundX%, %FoundY% ?
Я пользуюсь MouseClick, left, FoundX, FoundY
Т.К Нужен двойной клик
MouseMove, %FoundX%, %FoundY%
click, 2Т.К Нужен двойной клик
MouseMove, %FoundX%, %FoundY% click, 2
можно и так
MouseClick, left, %FoundX%, %FoundY%, 2, 0ImageSearch пробовал? Осуществляет поиск изображения в области экрана.
А скрин готовый или надо скриптом делать?
А что? AHK умеет делать скриншоты заданной прямоугольной области экрана?
Умеет, и не только это.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться