"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:
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:
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:
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.
Referencias
- Cropper
- IE Clone
- Using the WebBrowser control in .NET
- Hosting a web browser component in a C# winform
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?
--
Uhh, habrá algun API, para hacerlo via Php???