"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:

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:

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