Estoy haciendo un programa que saca capturas de pantalla de juegos que utilizan OpenGL, en Windows XP saca correctamente, pero en W7 las capturas salen en negro o del escritorio de Windows, ya pregunte en algunos foros especializados en Delphi y no supieron contestarme ya que se especializan en hacer programas de otros tipos (bases de datos para empresas y demas).
El programa lo que hace es sacar capturas de la pantalla cada cierto tiempo y despues convertirlas en video, el codigo que uso basicamente es este:
Citar
Visible := False;
Application.ProcessMessages;
Bmp := TBitmap.Create;
try
Bmp.FreeImage;
Bmp.Width := GetSystemMetrics(SM_CXSCREEN); //Screen.Width
Bmp.Height := GetSystemMetrics(SM_CYSCREEN); //Screen.Height
BitBlt(Bmp.Canvas.Handle, 0, 0, Bmp.Width, Bmp.Height, GetDc(0), 0, 0, SRCCOPY);
Bmp.SaveToFile (ChangeFileExt(Application.ExeName,'.bmp'));
finally
Bmp.Free;
end;
Visible := True ;
con algunas modificaciones para que vaya haciendo las capturas en distintos archivos, etc.Application.ProcessMessages;
Bmp := TBitmap.Create;
try
Bmp.FreeImage;
Bmp.Width := GetSystemMetrics(SM_CXSCREEN); //Screen.Width
Bmp.Height := GetSystemMetrics(SM_CYSCREEN); //Screen.Height
BitBlt(Bmp.Canvas.Handle, 0, 0, Bmp.Width, Bmp.Height, GetDc(0), 0, 0, SRCCOPY);
Bmp.SaveToFile (ChangeFileExt(Application.ExeName,'.bmp'));
finally
Bmp.Free;
end;
Visible := True ;
El problema como dije antes, es que en W7 las capturas salen del escritorio propio de windows o en negro. Solamente ocurre cuando el juego esta en OpenGL y en pantalla completa, en modo ventana o en otro modo de video captura correctamente.
Como puedo hacer que capture lo que se ve solo en el juego?
Espero que en este foro me puedan ayudar. Saludos.