![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Приветствую граждане
Пишу программку для распознавания скринов с игры. Игра - онлайн шутер. Скрины то я получаю а вот с распознаванием возникла сложность. Игра вроде работает через DirectDraw и имеет свою защиту. GetPixel при запущенной игре не работает и возвращает один цвет(видимо что то блочит). Может кто подскажет альтернативу GetPixel или еще какой способ обойти эту проблему т.к. в графике я ни как не шарю. Зарание спасибо. |
|
#2
|
||||
|
||||
|
Цитата:
|
|
#3
|
|||
|
|||
|
Bmp. Мне главное что бы делался скрин(любым способом) и я мог распознавать на нем пиксели. Остальное не важно, дальше уже разберусь.
Может как то по другому нужно выдергивать скрины? __________________________________ Bmp := Tbitmap.Create; Bmp.Height := HeightCF; Bmp.Width := WidthCF; DC := GetDC(Wnd); Bitblt(Bmp.Canvas.Handle, 0, 0, WidthCF, HeightCF, DC, 0, 0, SRCCOPY); _____________________________________ Если игруху закрыть то все норм, но смысл как раз в том что бы ее не закрывать. Последний раз редактировалось VoFF4eG, 31.10.2012 в 13:10. |
|
#4
|
||||
|
||||
|
Цитата:
Код:
var bmp: TBitmap; Color: TColor; begin Color := bmp.Canvas.Pixels[X, Y]; end; |
|
#5
|
|||
|
|||
|
Нет, то же самое что и при GetPixel
|
|
#6
|
|||
|
|||
|
Я так думаю что система защиты игры (античит) что то мутит(блокирует).
|
|
#7
|
||||
|
||||
|
Цитата:
Цитата:
|
|
#8
|
|||
|
|||
|
Дело в том, что скрины отлично сохраняются. Просто перед сохранением мне их обрабатывать нужно )
|
|
#9
|
||||
|
||||
|
Цитата:
Код:
procedure TForm1.Timer1Timer(Sender: TObject);
var
bmp: TBitmap;
hw: HWND;
Can: TCanvas;
Color: TColor;
R: TRect;
begin
Timer1.Enabled := False;
bmp := TBitmap.Create;
try
Can := TCanvas.Create;
hw := GetDesktopWindow;
Can.Handle := GetDC(hw);
if not GetWindowRect(hw, R) then
begin
ShowMessage(SysErrorMessage(GetLastError));
Exit;
end;
bmp.Width := R.Right - R.Left;
bmp.Height := R.Bottom - R.Top;
bmp.Canvas.CopyRect(Rect(0, 0, bmp.Width, bmp.Height), Can, R);
Caption := 'Цвет пикселя: ' + IntToHex(bmp.Canvas.Pixels[100, 100], 8);
finally
bmp.Free;
end;
Beep;
end;Естественно интервал в таймере нужно поставить достаточный для запуска игры. |
| Этот пользователь сказал Спасибо poli-smen за это полезное сообщение: | ||
VoFF4eG (01.11.2012)
| ||
|
#10
|
|||
|
|||
|
Благодарю за код. Буду пробовать.
о результате отпишу. |
|
#11
|
|||
|
|||
|
00000000 - вот и все что я получаю...
При чем как только игруху закрываю... сразу все работает ))) Ну и что это за фигня? Мысли будут? |
|
#12
|
|||
|
|||
|
Есть ли возможность как то защитить свою программу от внешних воздействий на нее?
|
|
#13
|
|||
|
|||
|
Удалил сообщение. (мой метод уже предлагали)
Последний раз редактировалось Anklav, 05.11.2012 в 17:14. |
|
#14
|
||||
|
||||
|
Цитата:
|
|
#15
|
|||
|
|||
|
Если на программу нет внешнего воздействия то почему происходит эта фигня??? Тупо не могу узнать цвет пикселя. возвращает нули и все. Хотя бы узнать в чем причина.
|