Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Capturar pantalla de una ventana ? (https://www.clubdelphi.com/foros/showthread.php?t=65323)

THACKER 05-12-2009 06:00:24

Capturar pantalla de una ventana ?
 
Que tal!

Hay alguna forma de capturar la imagen de una ventana que se este ejecutando ?, y que la guarde como (.JPG ó .BMP) ?. A de existir alguna no se pienso yo, y si la hay por favor decirme como hacerlo.

Un Saludo.

radenf 05-12-2009 12:16:08

Estimado THACKER :

Quizás este truco te pueda servir

http://www.trucomania.org/trucomania/truco.cgi?185&esp

Salu2

rgstuamigo 05-12-2009 13:55:42

Para capturar la ventana activa:
Código Delphi [-]
keybd_event(VK_SNAPSHOT,1,0,0);
Para capturar toda la pantalla :
Código Delphi [-]
keybd_event(VK_SNAPSHOT, 2, 0, 0);
El Capturamiento se hace en el CLIPBOARD (Portapapeles), es como si hayas hecho un copiar(Ctrl+C),Ahora si quieres puedes pegarlo donde tú desees o hacerte un metodo que lea del portapapeles y guarde la imagen en el formato que tú desees.;)
Saludos...:)

Nasca 15-12-2009 18:34:27

Revisa el procedimiento GetFormImage. Devuelve un TBitmap con la ventan mostrada. Eso sí, no devuelve la barra de herramientas, menú, ni bordes de ventana.

Yo lo uso para imprimir un pantallazo del formulario directamente en Fast-Report, lo que permite convertirlo directamente a pdf y otras lindezas de Fast-Report. Por si a alguien le interesa este es el código utilizado:

Código Delphi [-]
procedure Tfdmdatos.frxRPantallaBeforePrint(Sender: TfrxReportComponent);
begin
if Sender.Name = 'mFormulario' then
  begin
    TfrxMemoView(Sender).Text := FormAImprimir.Caption;
  end;
if Sender.Name = 'pFormulario' then
  begin
    TfrxPictureView(Sender).Picture.Assign(FormAImprimir.GetFormImage);
  end;
end;

Creo recordar que traté de utilizar el método de Trucomanía y no daba la suficiente calidad.
El sistema de usar el portapapeles no termina de gustarme del todo por eso de tocar el sistema (portapapeles) un poco a espaldas del usuario, pero la verdad es que es una buena opción.

Otra opción sería utilizar ASGCapture de Apprehend. Es una pequeña y potente maravilla para realizar capturas de pantalla de casi cualquier cosa.

Suerte.


La franja horaria es GMT +2. Ahora son las 05:15:14.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi