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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 28.07.2010, 15:46
romingood romingood вне форума
Прохожий
 
Регистрация: 26.02.2010
Сообщения: 36
Репутация: 9
Радость Задачка для первого класса

Всем привет!

Надо написать прогу, вот решил спросить, с какого конца к этой задаче подступиться.

Итак. Что мне нужно:

- взять снимок экрана у EXE-приложения (внутри экзешника вроде флеш, если это важно, окно размером 800*600), причем взять этот снимок надо быстро и удобно для дальнейшей работы с ним.
- найти (каким образом? перебором массива?) некие пиксели определенного цвета на этом снимке экрана.
- пошевелить мозгами (этот вопрос я сам решу)
- нажать кнопку мыши в определенном месте окна EXE-приложения, а также по необходимости ввести некие значения с клавы.

Всё.

Главный вопрос - можно ли сделать так, чтобы моё приложение работало с этим EXE-файлом в фоновом режиме? Чую, что нет, но спросить надо.

Спасибо за прочтение
Ответить с цитированием
  #2  
Старый 29.07.2010, 03:31
Asinkrit Asinkrit вне форума
Местный
 
Регистрация: 29.10.2009
Сообщения: 446
Репутация: 271
По умолчанию

Походу пьесы тебе нужен БОТ, для флеш игр,
я недавно написал бота, для игры Большой Город вконтакте, работает со всеми городами, все собирает, и ставит производство.
Один его минус, работает в активном режиме, делает снимок самой флешки из броузера, ищет картинки 20х20 в снимке, а потом прокликивает.
А поповоду фоногого режима, все просто, поставил Virtual PC, в нем и запускаю. работать не мешает)
Вот только просто так, я тебе исходник не дам, уж больно много времени потратил) Но если интересно, пиши)
Ответить с цитированием
  #3  
Старый 29.07.2010, 09:51
Аватар для friz
friz friz вне форума
Местный
 
Регистрация: 04.04.2008
Адрес: Минск
Сообщения: 596
Версия Delphi: 2007 & JAVA EE
Репутация: 10670
По умолчанию

Вот валялись какие-то заготовки:
Код:
var x0,y0,x1,y1:integer;
    i,j,zu:integer;
    DC: HDC;
    Color: Cardinal;                         
begin 
//x1,y1 - верхний левый угол, x2,y2 нижний правый угол, окна с приложением
i:=strtoint(edit1.Text); //x1
j:=strtoint(edit2.Text); //y1
x1:=strtoint(edit3.Text);  //x2
y1:=strtoint(edit4.Text); //y2
//edit5.Text - код цвета который надо найти в 16-ти ричной записи (прим:FFFFFF)
while i<=x1 do
 begin
  While j<=y1 do
  begin
  DC := CreateDC('Display', nil, nil, nil);
  Color := GetPixel(DC,i ,j ); //получаем цвет в точке 
 
  if edit5.Text=IntToHex(color,6) then begin SetCursorPos(i,j);{тут вставляешь процедуру кликалки} sleep(100); end;
  DeleteDC(DC);
  j:=j+5; //просматриваем через 5 пикселей, можно сделать меньше в зависимости от размера элементов
  end;
  j:=strtoint(edit2.Text);
  i:=i+5;
 end;
end;
__________________
Последний раз редактировалось Admin, Сегодня в 10:32.
Ответить с цитированием
  #4  
Старый 30.07.2010, 21:34
Asinkrit Asinkrit вне форума
Местный
 
Регистрация: 29.10.2009
Сообщения: 446
Репутация: 271
По умолчанию

Неудачное решение ты предлогаешь.
Что-то афтор вопроса заглох,
Афтор, у меня к тебе встречное предложение,
я тебе отдам исходники бота, но взамен ты решишь задачку (может она тобой уже решена, судя по параллейной твоей теме). Мне надо флешку, или страничку со флешкой открыть у себя в дельфях, через тот же TWebBrowser, хотя у меня есть и другие неплохие исходники броузеров, но у меня проблема, новые игры в том же контакте, передают флешке набор параметров, и эти флешки в дельфях не открываются, вообщем в этом и вся проблема, решить ее не смог.

В двух словах о коде бота:
1) Автоопределение окон с флешкой. (программа работает с окнами)
2) Делается снимок не всего экрана, а только области флешки.
3) Очень быстрый алгоритм поиска картинки.
4) Можно быстро менять набор искомых картинок.
5) Быстро менять правила алгоритма (гибкие настройки)
Работает на ура все это дело.

так что думай, буду рад сотрудничеству..)
Ответить с цитированием
  #5  
Старый 31.07.2010, 04:10
romingood romingood вне форума
Прохожий
 
Регистрация: 26.02.2010
Сообщения: 36
Репутация: 9
По умолчанию

сорри.
но я пока ничего не смыслю в программировании, только начинаю.
Рад бы помочь, да не могу.
Ответить с цитированием
  #6  
Старый 03.08.2010, 20:37
romingood romingood вне форума
Прохожий
 
Регистрация: 26.02.2010
Сообщения: 36
Репутация: 9
Подмигивание

Уважаемый mr. friz!

Ваш кусок кода прекрасно работает.
Но. Я в целях исследования скорости работы сделал приращение не на 5, а на 1 пиксель, и всё, программа и так-то работала медленно, а тут вообще на несколько минут уходила в себя, пока разбирала кусок экрана размером 100х100 пикселей. ОООчень долго!
Мало того - пока прога ковыряется с канвасом, у меня форма почему-то застывает... и динамические надписи на LABEL (служебная инфа) застревает... странно это всё

Может, существует возможность как-то оперативно считать кусок экрана в массив? Если вдуматься, в куске 100х100 пикселей всего-то 10 тысяч пикселей, должно по идее моментально отрабатывать.

Как думаете?
Ответить с цитированием
  #7  
Старый 03.08.2010, 21:29
romingood romingood вне форума
Прохожий
 
Регистрация: 26.02.2010
Сообщения: 36
Репутация: 9
Стрелка

А если быть точнее, сообщаю результаты последнего теста:
окно 1024*600, шаг 5 пикселей и по ширине, и по высоте.

Прога работала 13 минут.

Мне бы секунды 3...
Ответить с цитированием
  #8  
Старый 05.08.2010, 00:55
romingood romingood вне форума
Прохожий
 
Регистрация: 26.02.2010
Сообщения: 36
Репутация: 9
По умолчанию

Где же Вы, Мистер Фриз
Ответить с цитированием
  #9  
Старый 05.08.2010, 01:01
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

По такому методу будет долго.
Снимай скриншот, и юзай сканлайн. Пример тут.
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj
Ответить с цитированием
  #10  
Старый 05.08.2010, 01:04
romingood romingood вне форума
Прохожий
 
Регистрация: 26.02.2010
Сообщения: 36
Репутация: 9
По умолчанию

Биг сенкс, буду изучать!
Ответить с цитированием
  #11  
Старый 05.08.2010, 09:52
Аватар для friz
friz friz вне форума
Местный
 
Регистрация: 04.04.2008
Адрес: Минск
Сообщения: 596
Версия Delphi: 2007 & JAVA EE
Репутация: 10670
По умолчанию

Цитата:
Сообщение от romingood
Где же Вы, Мистер Фриз
ТУТА Я!!!

кстати а ты случаем не оставил в коде процедуру sleep(100) ? очень похоже что да Убери ее и будет тебе счастье!

Я специально ее делал в своей проге что бы видеть как двигается мышка...в целом не помню зачем но надо было
__________________
Последний раз редактировалось Admin, Сегодня в 10:32.
Ответить с цитированием
  #12  
Старый 05.08.2010, 13:40
romingood romingood вне форума
Прохожий
 
Регистрация: 26.02.2010
Сообщения: 36
Репутация: 9
Подмигивание

Нее, ну конечно нет.
Да и функцию движения мышки к найденной точке я тоже убрал.
Все равно работает очень медленно.

Но тут какое дело.
Я ж там еще добавил в случае найденных точек закрашивание найденных пикселей красным цветом. Ну, так, чтобы было визуально видно, как прога работает. Ну, и еще сначала я рисовал прямоугольник, чтобы обозначить периметр поиска.

Всё это вряд ли может помешать быстродействию, потому что периметр показывается один раз при старте проги, а закраски пикселей происходит только когда они найдены, то есть редко.

Я вывел на морду Label-ы и application.processmessages, чтобы видеть, какие координаты сейчас прога обрабатывает. Может, и в этом дело тоже, вдруг нельзя при работе с канвасом какую-то динамику на форме делать. Я ж хз.

А попутно у меня вот еще какой вопрос.
Мне чуть выше дали ссылку на пост, где моя задача вроде как выполняется. вот она
Посмотрите, плз там, как вообще прога там примерно работает?
Видно, что круть но непонятно, во первых, что эта прога вообще делает, и если что-то ищет, то как ей передать входные параметры и увидеть результат. Все же чую, что дело идет к Скайлайну...
Ответить с цитированием
  #13  
Старый 05.08.2010, 14:23
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

Цитата:
Сообщение от romingood
Мне чуть выше дали ссылку на пост, где моя задача вроде как выполняется. вот она
Вообще-то, там прога делает совершенно другое. Я дал ссылку, только как пример работы со сканлайном.
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj
Ответить с цитированием
  #14  
Старый 05.08.2010, 15:01
romingood romingood вне форума
Прохожий
 
Регистрация: 26.02.2010
Сообщения: 36
Репутация: 9
По умолчанию

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


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter