Ago 06
Capturar una imagen de la ventana activa con VB.Net
Muchas veces nos es útil capturar una imagen del momento en que se produce un error para saber qué sucedió o cómo solucionarlo. Sin ir más lejos, en mi trabajo anterior instalamos una aplicación y a veces teníamos un error que después de hacer guardias de 8hs frente a los usuarios no pudimos encontrar y las explicaciones y suposiciones de los usuarios carecían totalmente de sentido.
Por eso mismo muchas veces es bueno capturar el estado de la aplicación en el momento, en este ejemplo vamos a capturar una imágen de la ventana activa y la vamos a guardar.
Lo primero que haremos será la función que captura la imágen, para eso utilizaremos el viejo y conocido recurso de apretar la tecla PRINT SCREEN, y para eso utilizaremos la función SendKeys.Send.
Private Sub ImprimirPantalla() SendKeys.Send("{PRTSC}") GuardarImagenDesdeClipboard() End Sub
Lo que hemos hecho hasta este momento es capturar la imagen, la misma queda en el portapapeles de Windows, así que para que nos sea útil necesitamos guardarla en un archivo debidamente identificado, para ello extraeremos la imagen del portapapeles y nos crearemos un archivo cuyo nombre se comprondrá de la fecha-hora actual y el nombre de la clase que generó la excepción.
Private Sub GuardarImagenDesdeClipboard() If Clipboard.ContainsImage() Then Dim NombreArchivo As String = String.Format("{0}_{1}.jpg", DateTime.Now.ToString("yyyyMMdd-HHmmss"), Me.Name) Dim Path As String = String.Format("{0}\logs\imagenes\{1}", Application.StartupPath, NombreArchivo) Dim img As Image = Clipboard.GetImage() img.Save(Path) End If End Sub
Hay que tener en cuenta que para que la imágen se guarde es necesario que el directorio donde se va a guardar exista previamente, por eso sería conveniente chequear su existencia y si es necesario crearlo, antes de intentar guardar la imagen.

Agosto 9, 2008 3:18hs
la verdad esta buena la idea, no se me ocurrio nunca jaja…
vere si me toca otra vez programar en vb.net… ojala no pero esta para aplicarla en lo q venga…
saludos
Octubre 14, 2008 19:35hs
Hola interesante el ejemplo, pero podrias poner la demo para descargarla??
gracias de ante mano
Octubre 14, 2008 22:16hs
@Luis: Cuando pueda lo subo, ando re corto de tiempo, pero básicamente tienes que agregar un Botón en un Form, y en el handler del evento click llamas al método
ImprimirPantalla()