Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   Скриншот в игре (https://forum.antichat.xyz/showthread.php?t=195897)

SultanOFF 13.04.2010 15:03

Скриншот в игре
 
Здравствуйте. Как сделать скриншот во время игры? (COD4). Если применять данный код, то вместо скрина черный экран
Код:

var  ScreenDC: HDC;
  canvas:Tcanvas;
 begin
  ScreenDC:=GetDC(0); 
 Canvas:=TCanvas.Create();
  canvas.Handle:=ScreenDC;
  Width:=Screen.Width; 
Height:=Screen.Height;  Img1.Canvas.CopyRect(Rect(0,0,Img1.Width,Img1.Height),  canvas,Rect(0,0,Screen.Width,Screen.Height));  Releasedc(0,ScreenDC); 
 Canvas.Free;
 end;


noxjoker 13.04.2010 15:05

Тебе нужна сама прога или сорс?

SultanOFF 13.04.2010 15:09

код нужен :(

Berman 13.04.2010 15:09

Цитата:

procedure TForm1.Button1Click(Sender: TObject);
var bmp:TBitmap;
begin
bmp := TBitmap.Create;
bmp.Width := Screen.Width;
bmp.Height := Screen.Height;
BitBlt(bmp.Canvas.Handle, 0,0, Screen.Width, Screen.Height,
GetDC(0), 0,0,SRCCOPY);
Image1.Width := Screen.Width;
Image1.Height := Screen.Height;
Image1.Picture.Assign(bmp);
bmp.Free;
end;
Побробуй этот код, должно помочь, ток там размерчики прописать надо кажется

Berman 13.04.2010 15:09

честно так и не понял, зачем тут канва =(

SultanOFF 13.04.2010 15:12

тоже самое ведь, тот же черный экран. Тут нужно чтото походу с директХ мудрить, но вот что и как Я непонимаю

Berman 13.04.2010 15:15

может у игры защита от скринов?

SultanOFF 13.04.2010 15:20

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

JnK 13.04.2010 20:38

[urt=http://delphiexpert.ru/view_download.php?id=14]Ссылка на прогоисходники[/url]

Если самому писать или гуглить:
DirectShow (DSPack)
Ссылка
считывать на прямую Оверлей

SultanOFF 14.04.2010 10:42

по той ссылке на делфи эксперте исходничек такой же как Мой, а значит также черный экран. DSpack установил но совершенно непонимаю как делать скриншот. Кто Может обьяснить?

TRX.new 14.04.2010 11:10

Я таким не занимался, но может эмулировать нажатие клавиши PrtSc , а затем брать из буфера?!

St0nX 14.04.2010 11:14

Цитата:

Сообщение от TRX.new
Я таким не занимался, но может эмулировать нажатие клавиши PrtSc , а затем брать из буфера?!

принт скрин не захватывает оверлей.

Keltos 14.04.2010 11:22

Fraps'ом пользуйся.
он работает, сам пользовался.

SultanOFF 14.04.2010 11:22

в принципе можно имитировать нажатие клавиши f12(все скриншоты сохраняются в папке ../Call Of Duty 4 - Modern Warfare/main/screenshots) и уже потом делать манипуляции с этим скринами, но опять же это довольно изварщенно....

SultanOFF 14.04.2010 11:23

Цитата:

Fraps'ом пользуйся.
он работает, сам пользовался.
так Мне в своей проге нужно реализолвать

SultanOFF 14.04.2010 11:38

в общем попробовал Я сымитировать принтскрин и потом вставил в пайнт- нормалек. Значит встает вопрос, как фотку из буфера сохранить в jpg? :)

TRX.new 14.04.2010 11:57

Цитата:

Сообщение от SultanOFF
в общем попробовал Я сымитировать принтскрин и потом вставил в пайнт- нормалек. Значит встает вопрос, как фотку из буфера сохранить в jpg? :)

Вот раз так, то думаю это поможет: http://www.delphi.int.ru/articles/24/

SultanOFF 14.04.2010 12:09

что то у Меня формат изображения никак не определяется. Перепробовал все варианты..в каком виде хранится скриншот в буфере? И как его записать в переменную bmp?

slesh 14.04.2010 12:33

почитай про Bitmap.LoadFromClipboardFormat.
Стандартный делфовый хелп гласит следующее:
Код:

procedure TForm1.Button1Click(Sender: TObject);

var
  Bitmap : TBitmap;
begin
 Bitmap := TBitMap.create;
 try
  Bitmap.LoadFromClipBoardFormat(cf_BitMap,ClipBoard.GetAsHandle(cf_Bitmap),0);
  Canvas.draw(0,0,Bitmap);
 finally
  Bitmap.free;
 end;
end;


SultanOFF 14.04.2010 12:51

попробовал..вылетела ошибка
Цитата:

unsupported clipdoard format
Вообще сделал небольшой эксперимент. Попробовал сам нажать принтскрин во время игры, и вашим кодом вставить изображение - все ок.
Попробовал с сэмулированной кнопкой принтскрин - вылетает ошибка, хотя в паинте норм вставляется.. странно..


Время: 15:30