Heute möchten wir Ihnen zwei Funktionen vorstellen, mit denen man den aktuellen Bildschirm-Inhalt: Das ganze wird unter Zuhilfenahme der entsprechenden WindowsAPI-Funktionen realisiert. Zunächst benötigen wir das Handle des Desktop-Fensters: Private Declare Function GetDesktopWindow Lib "user32" _ () As Long hWnd = GetWindowsDektop() Anschliessend ermitteln wir den Gerätekontext DC (DeviceContext): Private Declare Function GetDC Lib "user32" _ (ByVal hWnd As Long) As Long DC = GetDC(hWnd) Nun wird der Inhalt des DeviceContect in die PictureBox "geblittet" oder direkt auf den Drucker ausgegeben: Private Declare Function BitBlt Lib "gdi32" _ (ByVal hDestDC As Long, ByVal x As Long, _ ByVal y As Long, ByVal nWidth As Long, _ ByVal nHeight As Long, ByVal hSrcDC As Long, _ ByVal xSrc As Long, ByVal ySrc As Long, _ ByVal dwRop As Long) As Long ' in die PictureBox BitBlt Picture.hDC, 0, 0, _ Screen.Width / Screen.TwipsPerPixelX, _ Screen.Height / Screen.TwipsPerPixelY, DC, 0, 0, _ vbSrcCopy ' oder direkt ausdrucken BitBlt Printer.hDC, 0, 0, _ Screen.Width / Screen.TwipsPerPixelX, _ Screen.Height / Screen.TwipsPerPixelY, DC, 0, 0, _ vbSrcCopy Abschliessend wird der DeviceContext wieder freigegeben: Private Declare Function ReleaseDC Lib "user32" _ (ByVal hWnd As Long, ByVal hdc As Long) As Long ReleaseDC hWnd, DC Und hier der gesamte Code zusammengefasst ' zunächst die benötigten API-Deklarationen Private Declare Function BitBlt Lib "gdi32" ( _ ByVal hDestDC As Long, _ ByVal x As Long, _ ByVal y As Long, _ ByVal nWidth As Long, _ ByVal nHeight As Long, _ ByVal hSrcDC As Long, _ ByVal xSrc As Long, _ ByVal ySrc As Long, _ ByVal dwRop As Long) As Long Private Declare Function GetDC Lib "user32" ( _ ByVal hWnd As Long) As Long Private Declare Function ReleaseDC Lib "user32" ( _ ByVal hWnd As Long, _ ByVal hdc As Long) As Long Private Declare Function GetDesktopWindow Lib "user32" () As Long ' aktuellen Bildschirm-Inhalt in PictureBox anzeigen Public Sub ScreenToPicture(Picture_hDC As Long) Dim hWnd As Long Dim DC As Long ' Desktop-Fenster hWnd = GetDesktopWindow() ' Zugang zum Device-Context DC = GetDC(hWnd) ' in PictureBox blitten BitBlt Picture_hDC, 0, 0, _ Screen.Width / Screen.TwipsPerPixelX, _ Screen.Height / Screen.TwipsPerPixelY, DC, 0, 0, _ vbSrcCopy ' DC wieder freigeben ReleaseDC hWnd, DC End Sub ' aktuellen Bildschirminhalt drucken Public Sub ScreenToPrinter() Dim hWnd As Long Dim DC As Long ' Desktop-Fenster hWnd = GetDesktopWindow ' Zugang zum Device-Context DC = GetDC(hWnd) ' Screen drucken Printer.Print BitBlt Printer.hDC, 0, 0, _ Screen.Width / Screen.TwipsPerPixelX, _ Screen.Height / Screen.TwipsPerPixelY, DC, 0, 0, _ vbSrcCopy ' DC wieder freigeben ReleaseDC hWnd, DC ' Druckauftrag beenden Printer.EndDoc End Sub Natürlich kann der "Screenshot" auch erst in der PictureBox angezeigt und später ausgedruckt werden. Hierzu schauen Sie sich dann am besten folgenden Tipp an: Grafik drucken Dieser Tipp wurde bereits 45.067 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv Vol.6 (einschl. Beispielprojekt!) Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
vb@rchiv CD Vol.6 Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! Online-Update-Funktion Entwickler-Vollversionen u.v.m. Tipp des Monats April 2024 Skyfloy Chart von Microsoft und dazu noch gratis Tutorial für Microsoft Chart Controls für Microsoft .NET Framework 3.5 sevZIP40 Pro DLL Zippen und Unzippen wie die Profis! Mit nur wenigen Zeilen Code statten Sie Ihre Anwendungen ab sofort mit schnellen Zip- und Unzip-Funktionen aus. Hierbei lassen sich entweder einzelnen Dateien oder auch gesamte Ordner zippen bzw. entpacken. |
||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |