- Web Browser control crashes
- Imports Microsoft.VisualBasic
- Imports System.Threading
- Imports System.Drawing
- Imports System.Windows.Forms
- Public Class ImageFromHtml
- Private PageUrl As String = "http://localhost/Default2.aspx"
- Private ConvertedImage As Bitmap
- Private m_intHeight As Integer = 1000
- Public Property Height() As Integer
- Get
- Return m_intHeight
- End Get
- Set(ByVal value As Integer)
- m_intHeight = value
- End Set
- End Property
- Private m_intWidth As Integer = 100
- Public Property Width() As Integer
- Get
- Return m_intWidth
- End Get
- Set(ByVal value As Integer)
- m_intWidth = value
- End Set
- End Property
- Public Function ConvertPage() As Bitmap
- Me.PageUrl = PageUrl
- Dim thrCurrent As New Thread(New ThreadStart(AddressOf CreateImage))
- thrCurrent.SetApartmentState(ApartmentState.STA)
- thrCurrent.Start()
- thrCurrent.Join()
- ConvertedImage.Save("c:Test.bmp", _
- System.Drawing.Imaging.ImageFormat.Bmp)
- Return ConvertedImage
- End Function
- Public Sub CreateImage()
- Dim BrowsePage As New WebBrowser()
- BrowsePage.ScrollBarsEnabled = False
- BrowsePage.Navigate(PageUrl)
- AddHandler BrowsePage.DocumentCompleted, AddressOf _
- WebBrowser_DocumentCompleted
- While BrowsePage.ReadyState <> WebBrowserReadyState.Complete
- Application.DoEvents()
- End While
- BrowsePage.Dispose()
- End Sub
- Private Sub WebBrowser_DocumentCompleted(ByVal sender As Object, ByVal e As _
- WebBrowserDocumentCompletedEventArgs)
- Dim BrowsePage As WebBrowser = DirectCast(sender, WebBrowser)
- BrowsePage.ClientSize = New Size(Width, Height)
- BrowsePage.ScrollBarsEnabled = False
- ConvertedImage = New Bitmap(Width, Height)
- BrowsePage.BringToFront()
- BrowsePage.DrawToBitmap(ConvertedImage, BrowsePage.Bounds)
- End Sub
- End Class
- Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
- Dim obj As New ImageFromHtml()
- obj.ConvertPage()
- obj = Nothing
- End Sub
- ' Navigates to the given URL if it is valid.
- Private Sub Navigate(ByVal address As String)
- If String.IsNullOrEmpty(address) Then Return
- If address.Equals("about:blank") Then Return
- If Not address.StartsWith("http://") And _
- Not address.StartsWith("https://") Then
- address = "http://" & address
- End If
- Try
- webBrowser1.Navigate(New Uri(address))
- Catch ex As System.UriFormatException
- Return
- End Try
- End Sub
- While BrowsePage.ReadyState <> WebBrowserReadyState.Complete
- Application.DoEvents()
- End While
- ConvertedImage.Save("c:Test.bmp", _
- System.Drawing.Imaging.ImageFormat.Bmp)