Rubrik: Grafik und Font · Bilder & Icons | VB-Versionen: VB6 | 24.03.04 |
Bildschirm-/Fensterinhalt als Bild speichern Dieser Tipp zeigt, wie man den Bildchirm- bzw. Fensterinhalt "fotografieren" und als Bild abspeichern kann. | ||
Autor: Dieter Otter | Bewertung: | Views: 33.590 |
www.tools4vb.de | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Heute möchten wir Ihnen eine Funktion vorstellen, mit der sich der Desktop oder alterntiv auch der Fensterinhalt des aktiven Fensters "fotografieren" und als Bild abspeichern lässt. Hierzu simulieren wir zunächst das Drücken der PrintScreen-Taste, lesen dann das Bild aus der Zwischenablage aus und speichern es als Bitmap ab.
Option Explicit ' zunächst die benötigten API-Deklarationen Private Declare Sub keybd_event Lib "user32" ( _ ByVal bVk As Byte, _ ByVal bScan As Byte, _ ByVal dwFlags As Long, _ ByVal dwExtraInfo As Long)
' Screenshot erstellen und ggf. als Bitmap speichern Private Sub DoSnapshot(Optional ByVal bActiveWindow As Boolean = False, _ Optional ByVal sFile As String = "") ' Der Parameter bActiveWindow legt fest, ob ein Screenshot ' für das aktuelle Fenster (True) oder für gesamten ' Windows-Desktop (False)erstellt werden soll ' Wird für "sFile" ein Dateiname angegeben wird der ' Screenshot sofort als Bitmap gespeichert Const KEYEVENTF_KEYUP = &H2 Const VK_MENU = &H12 Const VK_SNAPSHOT = &H2C ' Screenshot erstellen ... If bActiveWindow Then keybd_event VK_MENU, 0, 0, 0 ' ALT-Taste keybd_event VK_SNAPSHOT, 0, 0, 0 ' Druck-Taste keybd_event VK_SNAPSHOT, 0, KEYEVENTF_KEYUP, 0 If bActiveWindow Then keybd_event VK_MENU, 0, KEYEVENTF_KEYUP, 0 DoEvents ' ... und als Bild speichern If sFile <> "" Then SavePicture Clipboard.GetData, sFile End If End Sub
Beispiel für den Aufruf:
' Destkop als Bild speichern DoSnapshot , "d:\desktop,bmp"
' Aktives Fenster als Bild speichern DoSnapshot True, "d:\window,bmp"