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.132 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. |
Neu! sevCommand 4.0 Professionelle Schaltflächen im modernen Design! Mit nur wenigen Mausklicks statten auch Sie Ihre Anwendungen ab sofort mit grafischen Schaltflächen im modernen Look & Feel aus (WinXP, Office, Vista oder auch Windows 8), inkl. große Symbolbibliothek. Tipp des Monats Mai 2024 Hermann Röttger Wochentage eines Datumsbereichs ermitteln Wochentage eines Datumsbereichs ermitteln, optional mit Feiertagsberechnung TOP Entwickler-Paket TOP-Preis!! Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR... |
||||||||||||||||
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. |