![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
![]() Всем привет!
Надо написать прогу, вот решил спросить, с какого конца к этой задаче подступиться. Итак. Что мне нужно: - взять снимок экрана у EXE-приложения (внутри экзешника вроде флеш, если это важно, окно размером 800*600), причем взять этот снимок надо быстро и удобно для дальнейшей работы с ним. - найти (каким образом? перебором массива?) некие пиксели определенного цвета на этом снимке экрана. - пошевелить мозгами (этот вопрос я сам решу) - нажать кнопку мыши в определенном месте окна EXE-приложения, а также по необходимости ввести некие значения с клавы. Всё. Главный вопрос - можно ли сделать так, чтобы моё приложение работало с этим EXE-файлом в фоновом режиме? Чую, что нет, но спросить надо. Спасибо за прочтение ![]() |
#2
|
|||
|
|||
![]() Походу пьесы тебе нужен БОТ, для флеш игр,
я недавно написал бота, для игры Большой Город вконтакте, работает со всеми городами, все собирает, и ставит производство. Один его минус, работает в активном режиме, делает снимок самой флешки из броузера, ищет картинки 20х20 в снимке, а потом прокликивает. А поповоду фоногого режима, все просто, поставил Virtual PC, в нем и запускаю. работать не мешает) Вот только просто так, я тебе исходник не дам, уж больно много времени потратил) Но если интересно, пиши) |
#3
|
||||
|
||||
![]() Вот валялись какие-то заготовки:
Код:
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
|
|||
|
|||
![]() Неудачное решение ты предлогаешь.
Что-то афтор вопроса заглох, Афтор, у меня к тебе встречное предложение, я тебе отдам исходники бота, но взамен ты решишь задачку (может она тобой уже решена, судя по параллейной твоей теме). Мне надо флешку, или страничку со флешкой открыть у себя в дельфях, через тот же TWebBrowser, хотя у меня есть и другие неплохие исходники броузеров, но у меня проблема, новые игры в том же контакте, передают флешке набор параметров, и эти флешки в дельфях не открываются, вообщем в этом и вся проблема, решить ее не смог. В двух словах о коде бота: 1) Автоопределение окон с флешкой. (программа работает с окнами) 2) Делается снимок не всего экрана, а только области флешки. 3) Очень быстрый алгоритм поиска картинки. 4) Можно быстро менять набор искомых картинок. 5) Быстро менять правила алгоритма (гибкие настройки) Работает на ура все это дело. так что думай, буду рад сотрудничеству..) |
#5
|
|||
|
|||
![]() сорри.
но я пока ничего не смыслю в программировании, только начинаю. Рад бы помочь, да не могу. |
#6
|
|||
|
|||
![]() Уважаемый mr. friz!
Ваш кусок кода прекрасно работает. Но. Я в целях исследования скорости работы сделал приращение не на 5, а на 1 пиксель, и всё, программа и так-то работала медленно, а тут вообще на несколько минут уходила в себя, пока разбирала кусок экрана размером 100х100 пикселей. ОООчень долго! Мало того - пока прога ковыряется с канвасом, у меня форма почему-то застывает... и динамические надписи на LABEL (служебная инфа) застревает... странно это всё ![]() Может, существует возможность как-то оперативно считать кусок экрана в массив? Если вдуматься, в куске 100х100 пикселей всего-то 10 тысяч пикселей, должно по идее моментально отрабатывать. Как думаете? |