Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 27.09.2015, 01:41
Аватар для Alloc
Alloc Alloc вне форума
Начинающий
 
Регистрация: 17.09.2014
Сообщения: 104
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Распознавание картинки на экране

Приветствую уважаемые форумчане!

Вообщем пытаюсь реализовать некое подобие бота для игры.
Выглядит игра следующим образом:



Желтый кружок передвигается плавно с лева на право.

Необходимо что бы программа как то определяла положение желтого круга в необходимом месте и производила нажатие кнопки.

Хотя бы подскажите в какую сторону копать а то я ума не приложу как это сделать.

Заранее спасибо.
Ответить с цитированием
  #2  
Старый 27.09.2015, 02:43
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

1. Узнать хандл окна, откуда будем брать цвет FindWindow()
2. Получить графический контекст этого окна GetDC()
3. Получить цвет пикселя по координатам GetPixel()
Код:
Var
  DC: HDC;
  Color: TColor;
begin
 DC := GetDC(FindWindow('Project5', ''));
 Color := GetPixel(DC, 40, 40);
 Caption := IntToHex(GetRValue(Color), 2)+IntToHex(GetGValue(Color), 2)+IntToHex(GetBValue(Color), 2);
end;
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
Этот пользователь сказал Спасибо Страдалецъ за это полезное сообщение:
Alloc (27.09.2015)
  #3  
Старый 27.09.2015, 11:27
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

А еще потом ReleaseDC. Иначе можно утечку получить.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
Этот пользователь сказал Спасибо Bargest за это полезное сообщение:
Alloc (27.09.2015)
  #4  
Старый 27.09.2015, 12:49
Аватар для Alloc
Alloc Alloc вне форума
Начинающий
 
Регистрация: 17.09.2014
Сообщения: 104
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

спасибо большое за ответ, я попробую)
Ответить с цитированием
  #5  
Старый 27.09.2015, 20:28
Аватар для Alloc
Alloc Alloc вне форума
Начинающий
 
Регистрация: 17.09.2014
Сообщения: 104
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

А вы не подскажите как это сделать через ScanLine? я слышал так намного быстрее получается. Заранее спасибо
Ответить с цитированием
  #6  
Старый 27.09.2015, 20:37
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

ScanLine - это к делфовым битмапам, а DC - это WinAPI. К тому же для одного пикселя scanline не быстрее.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
  #7  
Старый 28.09.2015, 20:32
Аватар для Alloc
Alloc Alloc вне форума
Начинающий
 
Регистрация: 17.09.2014
Сообщения: 104
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

А вы не могли бы поправить код моей программы? Что то не получается у меня и не понимаю в чем дело...

При нажатии Ctrl+Alt+Space она запоминает координаты мышки и цвет пикселя, после чего запускается таймер с интервалом "1". В таймере сравнивается пиксель который мы сохранили и текущий, если они равны тогда нажимается пробел. Проблема в том, что во первых она нажимает кнопку с небольшим опозданием (а это очень важно) и во вторых почему то не всегда срабатывает..

Вот сам исходник:

Код:
deleted

К сожалению не знаю как в спойлер это поставить....

Буду вам очень благодарен за помощь.

Последний раз редактировалось Alloc, 01.10.2015 в 19:50.
Ответить с цитированием
  #8  
Старый 01.10.2015, 01:47
Аватар для Alloc
Alloc Alloc вне форума
Начинающий
 
Регистрация: 17.09.2014
Сообщения: 104
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

спасибо всем за помощь, разобрался более или менее

Последний раз редактировалось Alloc, 01.10.2015 в 19:51.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 21:15.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025