Categories
.NET Artí­culos

Haciendo Screenshots con Cropper y AxWebBrowser

Integrando Cropper y AxWebBrowser para sacar Screenshot del navegador

"Microsoft Web Browser" (AxWebBrowser) es un componente ActiveX que es usado por Internet Explorer, puede mostrar diferentes tipos de documentos (HTML, Word, Excel, PowerPoint, txt, rtf, gif, jpg, xml, pdf, etc), este control puede ser agregado fácilmente a cualquier aplicación, permitiendo crear navegadores personalizados en los casos en los que necesite esa funcionalidad.

Cropper es un programa desarrollado por Brian Scott que permite hacer capturas de pantalla de manera muy simple, soporta varios formatos (bmp, jpeg, png, copiar al portapapeles e imprimir)y en la nueva versión (en fase beta) se puede guardar en formato AVI, haciendo capturas sucesivas.

El presente artículo explica los pasos generales de como hacer la integración entre estos dos elementos, para lo cual hago uso del navegador "IE Clone" disponible en ésta dirección.

Explicación

Una vez abierto el proyecto del navegador, se actualizan las referencias de las librerías
SHDocVw, AxShDocVw y
Microsoft.mshtml, esto se puede hacer agregando una referencia desde el Visual Studio .Net o desde la consola, utilizando los siguientes comandos:

code:

aximp c:\windows\system\shdocvw.dll
tlbimp mshtml.tlb

La utilidad aximp (ActiveX Control Importer) está incluida dentro del .Net Framework, para lo cual se sugiere que se ejecute el archivo vsvars32.bat, que en mi caso está en "C:\Archivos de programa\Microsoft Visual Studio .NET 2003\Common7\Tools\".

Una vez que se tiene el navegador funcionando, a continuación se agrega un control PictureBox, se implementa el evento Click de éste y se pone el código necesario:

vbnet:

Public Sub TakeScreenshot()
                Dim image As image = Nothing
                Dim captureOutput As captureOutput = Nothing
                'Dim captureOutput As captureOutput = Nothing
                Dim x As Integer = Me.Left + 5
                Dim y As Integer = Me.Top + 98
                Dim width As Integer = Me.Width - 26
                Dim height As Integer = Me.Height - 130
                Try
                                image = Desktop.GetBitmap(x, y, width, height)
                                captureOutput = New captureOutput(image)
                                captureOutput.Directory = cfg.GetSetting("SavePath")
                                Dim _imageFormat As String = cfg.GetSetting("Format")
                                Dim _isThumbnailed As Boolean = CType(cfg.GetSetting("Thumbnail"), Boolean)

                                Select Case _imageFormat
                                                Case "Clipboard"
                                                                captureOutput.SaveToClipboard()
                                                Case "Printer"
                                                                captureOutput.Print()
                                                Case Else
                                                                captureOutput.SaveToFile(_imageFormat, CType(cfg.GetSetting("ThumbMaxSize"), Double), _isThumbnailed)
                                End Select
                Catch ex As Exception
                                MsgBox(ex.ToString)
                Finally
                                If Not image Is Nothing Then
                                                image.Dispose()
                                End If
                                If Not captureOutput Is Nothing Then
                                                captureOutput.Dispose()
                                End If
                End Try
End Sub

Como se puede ver en la siguiente imágen, ya se tiene el navegador con la funcionalidad incluída:

Navegador con la funcionalidad de screenshot

Adicionalmente se crea un nuevo formulario para modificar ciertas propiedades, tales como el formato de salida de las capturas de pantalla, si se van a crear thumbnails, si se van a guardar las imágenes en un intérvalo de tiempo definido, etc. Toda esa información se guarda en un archivo de configuración personalizado.

Opciones para hacer screenshots

Referencias

Elementos utilizados

2 replies on “Haciendo Screenshots con Cropper y AxWebBrowser”

Yo hace un tiempo me tope con un sitio al cual le pasabas una direccion como parametro en la url y te regresaba un screenshot del sitio (No era base de datos como Alexa.com ni similar era en tiempo real).

¿Alguien sabe de ese sitio?
--

Comments are closed.