vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
SEPA-Dateien erstellen inkl. IBAN-, BLZ-/Kontonummernprüfung  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück
Rubrik: HTML/Internet/Netzwerk · WebBrowser   |   VB-Versionen: VB2005, VB200813.10.08
Snapshot einer Webseite erstellen

Mit dieser Funktion lässt sich ein Snapshot einer Webseite erstellen, die aktuell im WebBrowser-Control angezeigt wird.

Autor:   Dieter OtterBewertung:     [ Jetzt bewerten ]Views:  14.840 
www.tools4vb.deSystem:  Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

Mit nachfolgender Funktion lässt sich ein Snapshot einer Webseite erstellen, die aktuell im WebBrowser-Control angezeigt wird.

Imports System.Drawing
''' <summary>
''' Erstellt einen Snapshot vom Inhalt der gerade im 
''' WebBrowser-Control angezeigten Webseite
''' </summary>
''' <param name="wb">WebBrowser-Control</param>
''' <param name="bCutScrollbars">optional. True, wenn Scrollbars 
''' ausgeblendet werden sollen</param>
''' <returns>Bitmap-Objekt mit dem Inhalt der Webseite als Bild</returns>
Private Function wbSnapshot(ByVal wb As WebBrowser, _
  Optional ByVal bCutScrollbars As Boolean = True) As Bitmap
 
  Dim oBitmap As Bitmap
 
  If bCutScrollbars Then
    ' Snapshot ohne WebBrowser-Scrollbars
    With wb.Document.Body.ClientRectangle
      oBitmap = New Bitmap(.Width, .Height)
    End With
  Else
    ' Snapshot mit WebBrowser-Scrollbars
    oBitmap = New Bitmap(wb.Width, wb.Height)
  End If
 
  ' Inhalt des WebBrowser-Controls in das Bitmap-Objekt "zeichnen"
  wb.DrawToBitmap(oBitmap, New Rectangle(0, 0, oBitmap.Width, oBitmap.Height))
 
  ' Bitmap-Objekt zurückgeben
  Return (oBitmap)
End Function

Anwendungsbeispiel:
Platzieren Sie auf die Form ein WebBrowser-Control, eine TextBox zur Einagbe der URL, sowie einen Button und ein PictureBox-Control. Die PictureBox dient zum Anzeigen des Snapshots der aktuellen Webseite.

Public Class Form1
 
  ' Timer-Objekt
  Dim WithEvents oTimer As New Timer
  Private Sub TextBox1_KeyPress(ByVal sender As Object, _
    ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
 
    If Asc(e.KeyChar) = 13 Then
      e.Handled = True
 
      ' Buttons deaktivieren, bis Seite vollständig geladen wurde
      Button1.Enabled = False
 
      ' Bildfeld löschen
      PictureBox1.Image = Nothing
 
      ' URL laden und anzeigen
      WebBrowser1.Navigate(TextBox1.Text)
      Me.Cursor = Cursors.WaitCursor
      oTimer.Interval = 100
      oTimer.Start()
    End If
  End Sub
  Private Sub oTimer_Tick(ByVal sender As Object, _
    ByVal e As System.EventArgs) Handles oTimer.Tick
 
    ' Prüfen, ob Webseite vollständig geladen wurde
    With WebBrowser1
      If .ReadyState = WebBrowserReadyState.Complete Then
        oTimer.Stop()
        Me.Cursor = Cursors.Default
        Button1.Enabled = True
      End If
    End With
  End Sub
  Private Sub Button1_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles Button1.Click
 
    ' Snapshort erstellen
    PictureBox1.Image = wbSnapshot(WebBrowser1)
  End Sub
End Class