Capturar pantalla desde un programa fivewin.

Post Reply
User avatar
Andrés González
Posts: 625
Joined: Thu Jan 19, 2006 10:45 am
Location: Mallorca

Capturar pantalla desde un programa fivewin.

Post by Andrés González »

Alguien sabe si existe algo implementado en fivewin o harbour que permita capturar pantalla o trozo de pantalla del mismo programa hecho con fivewin, sin depender de un programa externo.
Me refiero a que quiero capturar un trozo de la pantalla para que luego el programa realice una serie de cosas con la pantalla capturada. A modo de ejmplo, si estamos mostrando un mapa o una foto dentro de fivewin, necesito poder tomar un area o la pantalla completa de esa foto, para que luego el mismo programa haga una serie de acciones como mandarla por mail, imprimirla o insertarla en un escrito y demas. Lo he visto con programa externo que te permiten capturar el trozo de pantalla que quieres y te genera el tipico BMP con el que posteriormente trabajas. Pero mi intencion es que sea fivewin que lo haga.
En mi caso concreo he implementado un ejemplo de jlcapel sobre como mostrar los mapas google en un programa fivewin mediante los activex http://www.capelblog.com/?p=83 , funciona muy bien, y nos facilitaria mucho el trabajo, mi intencion es definir un punto en el mapa para poderlo enviar por correo, indicando la zona de una averia viaria, para que los que reciben el correo acudan a ese lugar. Igual se puede hacer desde el api de google pero creo que mas facil seria poderlo implementar desde fivewin.

Gracias de antemando.
Frafive
Posts: 189
Joined: Wed Apr 05, 2006 9:48 pm

Post by Frafive »

Andres

Tengo el mismo problema que tu , si encuentras alguna solucion por favor , la pones por aqui.

Una duda como le pasas el punto al mapa, se le podria pasar por ejemplo una localidad o provincia ?

Un saludo
User avatar
Alfredo Arteaga
Posts: 326
Joined: Sun Oct 09, 2005 5:22 pm
Location: Mexico
Contact:

Post by Alfredo Arteaga »

... se me ocurre.

WndBitmap( Self:hWnd ) // to image
o
WndCopy( Self:hWnd, .F., .T. ) // to clipboard
User avatar
Paco Garcia
Posts: 172
Joined: Fri Oct 07, 2005 12:00 pm
Contact:

una idea

Post by Paco Garcia »

Hola

De esta forma se puede copiar toda la ventana.

Code: Select all

#include "fivewin.ch"
function main()
   local oWnd, oBrush
   DEFINE BRUSH oBrush STYLE "NULL"
   syswait(0.3)
   DEFINE WINDOW oWnd FROM 0, 0 TO GetSysMetrics( 1 ), GetSysMetrics( 0 ) PIXEL STYLE WS_POPUP  BRUSH oBrush
   oWnd:Show()
   DibWrite( "screen.bmp", DibFromBitmap( WndBitmap( oWnd:hWnd ) ) )
  // para ver lo capturado  
  ShellExecute( GetActiveWindow() ,nil, cFilePath(GetModuleFileName(GetInstance())) + "screen.bmp",'','',5)
return nil
Si tienes cualquier otro manejador (hWnd) es cuestión de sustituirlo, donde pone oWnd:hWnd pon el manejador.


Un saludo
Post Reply