Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Gráficos (https://www.clubdelphi.com/foros/forumdisplay.php?f=8)
-   -   Capturar ventana activa y guardarla (https://www.clubdelphi.com/foros/showthread.php?t=15202)

StartKill 14-10-2004 04:41:44

Capturar ventana activa y guardarla
 
Holas a todos.

Trabajo con delphi 7.0... en una oportunidad pedi ayuda al foro para capturar la pantalla (desk/escritorio) y guardarlo en un archivo, cosa que llegue hacerlo sin mayores problemas ya que el codigo para este trabajo lo encontre en trucomania.

Ahora me surge otra necesidad.... necesito capturar solo la ventana activa de cualquier aplicacion y guardarlo en un archivo grafico.. si fuera *.jpg sera perfecto.

A la espera de sus aportes, se despide..

Your friend,

StartKill
Lima-Perú

jdangosto 14-10-2004 17:22:24

Buenas, si te entendí bien quieres capturar las ventanas que se muestran independientemente de lo que exista detras de ellas. Si es así, eso lo puedes lograr con la combinación de las teclas ALT+Print Screen y luego ir a cualquier archivo de edición de gráficos(si trabajas con windows te valdría el paint, el microsoft photo editor, el imaging, etc...) y pegarla como si de un texto se tratara (edición pegar o ctrl+v).

Espero haberte ayudado.

Un saludo

StartKill 14-10-2004 19:14:31

Tenes razón, la combinacion de teclas funciona correctamente.... :)

Pero lo que quiero es poder hacer esto desde código.... ;)

Para mas detalles:

1.-Hay una aplicación "servidor" el recibe ordenes de una aplicacion "cliente" (control-remoto)

2.-El "cliente" envia una orden al "servidor" indicando que capture solo la ventana activa para luego grabarla en un archivo gráfico.

3.-Como mencione antes, tengo la rutina para capturar todo el escritorio..., pero solo necesito la ventana activa.

//-------------------
Razon por la cual necesito hacerlo por codigo ya que no tendria acceso a la otra PC fisicamente para manipular el teclado. :(

A la espera de sus aportes, comentarios, regalos, maldiciones...

Your Friend, :cool:

StartKill
Lima-Perú

keyboy 14-10-2004 20:37:44

¿Te sirve esto?


Código:

  (* Rutina para capturar la imaen de la ventana activa *)
 
  var
          ActiveWnd: HWnd;
          WinRect: TRect;
          Bitmap: TBitmap;
          Canvas: TCanvas;
 
  begin
          { Obtener ventana activa }
          ActiveWnd := GetForegroundWindow();
 
          { Obtener dimensiones de la ventana activa }
          GetWindowRect(ActiveWnd, WinRect);
 
          { Crear bitmap con las dimensiones de la ventana activa }
          Bitmap := TBitmap.Create;
          Bitmap.Width := WinRect.Right - WinRect.Left;
          Bitmap.Height := WinRect.Bottom - WinRect.Top;
 
          { Obtener un canvas para la ventana activa }
          Canvas := TCanvas.Create;
          Canvas.Handle := GetWindowDc(ActiveWnd);
 
          { Copiar el canvas de la ventana activa al bitmap }
          WinRect := Rect(0, 0, Bitmap.Width, Bitmap.Height);
          Bitmap.Canvas.CopyRect(WinRect, Canvas, WinRect);
 
          { Guardar el bitmap en un archivo }
          Bitmap.SaveToFile('window.bmp');
 
          { Liberar recursos }
          Canvas.Free;
          Bitmap.Free;
  end;

Bye

StartKill 15-10-2004 16:45:31

Hola, keyboy--- gracias por este codigo funciono a la perfeccion.

jdangosto, si no habia forma de hacer en codigo estaba pensando en llenar el buffer de teclado con la combinacion de teclas que mecionabas, luego.....--gracias a ti tambien

Your friend,

StartKill
Lima-Perú

Nota: Señores moderadores, :confused: ayer respondi a este hilo---dando las gracias a keyboy jdangosto, pero veo que yo no he grabado bien o se han perdido datos en la pagina???


La franja horaria es GMT +2. Ahora son las 18:11:42.

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