Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.05.23;
Скачать: CL | DM;

Вниз

как захватить изображение экрана во время работы компьютерной игр   Найти похожие ветки 

 
hawkins   (2004-02-21 08:36) [0]

Кто-нибудь подскажет, как захватить изображение экрана во время
работы компьютерной игры?


 
Zeqfreed ©   (2004-02-21 14:10) [1]

Так же, как и не вовремя работы комп. игры...
А если серьёзно, я думаю твоя проблема заключается в том, как узнать момент, когда надо делать снимок. Я реализовывал это примерно так:
...
type  
TForm1 = class(TForm)  
procedure FormCreate(Sender: TObject);  
procedure FormDestroy(Sender: TObject);  
protected  
procedure hotykey(var msg:TMessage); message WM_HOTKEY;  
end;
...
procedure TForm1.hotykey(var msg:TMessage);  
begin  
//Тут делаешь скриншот
end;  
...
var id : integer;
...
id:=GlobalAddAtom("hotkey");  
RegisterHotKey(handle,id,mod_control,81);
...
UnRegisterHotKey(handle,id);
...

P.S. Поищи инфу по гор. клавишам, если плохо понятно. Ещё один вариант - DirectInput (с помощью него тоже делал)

P.P.S. Если не знаешь, как сделать скриншот не вовремя игры, то
BitBlt(BitMap.Canvas.Handle,0,0,Width,Height,GetDC(0),0,0,SRCCOPY);
BitMap.SaveToFile("img00.bmp");


 
able ©   (2004-02-21 18:17) [2]


> Так же, как и не вовремя работы комп. игры...

Если использовать обычные и широкоизвестные процедуры, то при DirectX получается фигня... :(


 
Zeqfreed ©   (2004-02-22 18:34) [3]

2 able:
Какие например?, BitBlt вроде хорошо работает, только с запечатлением проигрывающегося ролика проблемы...


 
able ©   (2004-02-22 19:13) [4]

>Zeqfreed ©   (22.02.04 18:34) [3]

 Canva := TCanvas.Create;
 B := TBitmap.Create;
 DC := GetDC(0);
 try
   Canva.Handle := DC;
 with Screen do
 begin
   B.Width := Width;
   B.Height := Height;
   B.Canvas.CopyRect(Rect(0, 0, Width, Height), Canva,Rect(0, 0, Width, Height));
   B.SaveToFile("screen.bmp");
 end
 finally
   ReleaseDC(0, DC);
   B.Free;
   Canva.Free
 end;

Что-то вроде того...


 
_dvp   (2004-02-23 01:49) [5]

Да блин, ф-ии GUI не видят того, что вывел DirectX - на то он и Direct, что работает на прямую с устройством....... так что через ф-ии GUI - никак.....


 
ZEE ©   (2004-02-23 14:40) [6]

2_dvp - только что попробовал "зафотографировать" CounterStrice и WarCraft3 в работе - получилось - так что все-равно DirectX/не DirectX
зы: фотографировал с пом. BitBlt


 
able ©   (2004-02-24 17:11) [7]

ZEE ©   (23.02.04 14:40) [6]
Видно, но коряво %)


 
Guest ©   (2004-03-11 12:14) [8]

не работает при воспроизведении AVI


 
Axis_of_Evil ©   (2004-03-12 15:53) [9]

>DC := GetDC(0);
А ежели не 0, а GetForegroundWindow (или GetActiveWindow) попробовать
// лишь предположение


 
Axis_of_Evil ©   (2004-03-12 15:54) [10]

>или GetActiveWindow
ну вот ето я керню сказал:>


 
Guest ©   (2004-03-12 16:16) [11]

нда со скриншотом совсем туго...
>>Axis_of_Evil
картинка скорее всего берется из буфера самой винды поэтому ни AVI-шку, ни игрушку не увидишь на картинке...



Страницы: 1 вся ветка

Текущий архив: 2004.05.23;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.022 c
9-1072205907
SoS
2003-12-23 21:58
2004.05.23
в примерах делфиХ нашел пример, но там безконечная карта!! как...


8-1078767391
DDA
2004-03-08 20:36
2004.05.23
Изображение на изображение с инверсией цвета


6-1080822035
BJValentine
2004-04-01 16:20
2004.05.23
Сокеты


1-1084224786
demonyator
2004-05-11 01:33
2004.05.23
Содержимое файла Word


14-1083257947
Delphi5.01
2004-04-29 20:59
2004.05.23
Как получить Sender?