vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Schützen Sie Ihre Software vor Software-Piraterie - mit sevLock 1.0 DLL!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Fortgeschrittene Programmierung
Bild/Screenie Speichern 
Autor: Annabelle
Datum: 25.11.05 07:36

Hallo!
Mein Bildschirmschonerproblem ist nun konkretisiert. Ich brauche nur alle paar minuten einen Screenshot des aktuelle geöffnenten Formulares in meiner AccXP Datenbank.
Dazu habe ich folgenden Code genommen:
Option Explicit

' Benötigte 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
' Screenshot eines bestimmten Bildschirmausschnitts erstellen
' und als Bitmap in einer Datei abspeichern
Public Sub Snapshot(oForm As Form, ByVal sFile As String, _
Optional ByVal x As Variant, _
Optional ByVal y As Variant, _
Optional ByVal nWidth As Variant, _
Optional ByVal nHeight As Variant)

Dim hWnd As Long
Dim nDC As Long
Dim oPicBox As Control

' Handle des Windows-Desktop
hWnd = GetDesktopWindow()

' Zugang zum Device-Context
nDC = GetDC(hWnd)

' Position und Größe des Bildschirmausschnitts
If IsMissing(x) Then x = 0
If IsMissing(y) Then y = 0
If IsMissing(nWidth) Then nWidth = Screen.Width / Screen.TwipsPerPixelX
If IsMissing(nHeight) Then nHeight = Screen.Height / Screen.TwipsPerPixelY

' temporäre PictureBox erstellen
Set oPicBox = oForm.Controls.Add("VB.PictureBox", "myPicTemp")
With oPicBox
.ScaleMode = vbPixels
.Width = oForm.ScaleX(nWidth, vbPixels, oForm.ScaleMode)
.Height = oForm.ScaleY(nHeight, vbPixels, oForm.ScaleMode)

' Snapshot in PictureBox blitten
.AutoRedraw = True
BitBlt .hDC, 0, 0, nWidth, nHeight, nDC, x, y, vbSrcCopy

' Bild abspeichern
SavePicture .Image, sFile

' DC wieder freigeben
ReleaseDC hWnd, nDC
End With

' Control wieder entfernen
oForm.Controls.Remove "myPicTemp"
End Sub

Beispiele für den Aufruf:
' gesamten Bildschirmbereich speichern
Snapshot Me, "d:\bild.bmp"
' Bildschirmausschnitt 100,100 - 500,500 speichern
Snapshot Me, "d:\bild.bmp", 100, 100, 400, 400
______________________________________

Das habe ich so einfach übernommen nur kommt er mit den Funktionen Screen.Width, Height, TwipsPerPixel usw nicht klar, kennt er nicht.
Ich denke das selbe wird bei .ScaleMode passieren.
Nun die Frage: muss ich eine bestimmte Bibliothek (API oder so) einbinden damit er die Befehle erkennt?

Gruß und vielen Dank Anna!

t?tet keine v?gel, wir v?geln auch keine toten!

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Bild/Screenie Speichern679Annabelle25.11.05 07:36
Re: Bild/Screenie Speichern420ModeratorDieter25.11.05 16:33

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
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.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel