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: Dieser Tipp wurde bereits 44.730 mal aufgerufen.
Anzeige
![]() ![]() ![]() (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 ![]() Dieter Otter Transparente Bitmaps Eine Funktion, mit der sich ein Bild anhand einer frei definierbare Farbe transparent darstellen lässt. 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. |