В общем есть задача. Создать программу которая 1) В браузере выделяем нужное изображение к примеру 5х5. Изображение анимированное. То есть делаем скрин и на нем выделяем эту область. 2) Далее необходимо это изображение постоянно искать в определенной области браузера(то есть не по всему экрану а к примеру в области 400х300 указанной мной) при этом как было сказано выше изображение анимированное то есть чтобы его найти наверно надо будет поставить таймер чтобы искал каждую секунду. 3) При нахождении такого изображения кликать на нем или есть условие то кликать к примеру на 5 пикселей ниже его. Подскажите как реализовать. А конкретнее интересует как реализовать поиск изображения? То есть надо не сравнивать 2 изображения а в браузере найти нужное мне. Пример чего хочу можно посмотреть в программе AutoClickExtreme но хочется свое т.к. там много лишнего что мне вообще не нужно.
Я бы делал не так: 1) Делаем все кадры анимации нужного нам изображения 2) Делаем скрин экрана 3) Из скрина экрана берем область 5х5 и сравниваем с 1-м кадром 2-м кадром ..... а чтобы было оптимальнее: берем из скрина область 5х1 и сравниваем с аналогичными областями кадров, если какая-то совпадает, то берем область 5х1, расположеную ниже и сравниваем с соотв. областями кадров.... Но тут наверное прийдется перед стартом создвать таблицу соответсвий кадров. Например: 1 линия у 1 и 3 кадра одинаковые 2 линия у 1,2 и 3 одинаковые и т.д. В итоге если соответстиве нашли в 1-х 5х1, то нужно вторые 5х1 проверить у 1 и 3 кадра. Я когда-то писал сходную прогу, но она очень долго 1 экран пробегала, поэтому если будешь писать: выбери и хорошо продумай алгоритм перебора иначе смысла от нее не будет.
Нашла пример тут http://programmersforum.ru/showpost.php?p=191914&postcount=3 Работает очень даже быстро ))
Функция возвращает True, если изображение найдено, а в переменную R := Rect(x, y, x+bmSub.Width, y+bmSub.Height); пишет координаты найденного изображения Если вам нужен именно центр, то x+(bmSub.Width div 2) y+(bmSub.Height div 2)
В общем все супер. Осталось вот какую проблему решить. Вместо Code: // Худший вариант bmSub := CaptureScreenRect(Rect(Screen.Width-150,Screen.Height-150,Screen.Width,Screen.Height)); Сделала Code: bmSub.LoadFromFile('screen.bmp'); Все чудно работает сколько раз подряд не жмакаю на баттон. Но потом понадобилось чтобы картинка бралась из Timage. Передаю так Code: bmSub:=Form1.imggv1.Picture.Bitmap И тут появилась проблема первый поиск проходит на ура. Но когда жму второй раз на баттон вылетает ошибка а именно Code: raised exception class eaccessviolation with message 'access violation at address В чем ошибка?