Форум по 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 тысяч пикселей, должно по идее моментально отрабатывать.

Как думаете?
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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