vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Brandneu! sevEingabe v2.0 - Das Eingabecontrol der Superlative!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   RSS-Feeds  | Newsletter  | Impressum  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2014
 
zurück
Rubrik: Windows/System15.03.02
GlobalLock-Funktion

Diese Funktion sperrt einen Speicherblock insofern, dass er nicht im Systemspeicher verschoben werden kann und beim Erstellen eines neuen Speicherblocks nicht überschrieben wird...

Betriebssystem:  Win95, Win98, WinNT 3.1, Win2000, WinMEViews:  4.700 

Deklaration:

Declare Function GlobalLock Lib "kernel32.dll" (ByVal hMem As Long) As Long


Beschreibung:

Diese Funktion sperrt einen Speicherblock insofern, dass er nicht im Systemspeicher verschoben werden kann und beim Erstellen eines neuen Speicherblocks nicht überschrieben wird. Ruft man diese Funktion mehrmals für einen Speicherblock auf, so muss man genauso oft die GlobalUnlock-Funktion aufrufen um den Speicherblock für das System wieder freizugeben.


Parameter:

hMemErwartet das Handle zu einem Speicherblock.


Rückgabewert:

Ist die Funktion erfolgreich, so liefert die sie einen Pointer zu der ersten Position an dem der Speicherblock beginnt, andernfalls ist "0" die Rückgabe.

Beispiel:

Private Declare Function PrintDlg Lib "comdlg32.dll" _
  Alias "PrintDlgA" ( _
  pPrintdlg As PRINTDLG_TYPE) As Long
Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
Private Declare Sub MoveMemory Lib "kernel32" _
  Alias "RtlMoveMemory" ( _
  Destination As Any, _
  Source As Any, _
  ByVal Length As Long)
Private Declare Function GlobalLock Lib "kernel32.dll" (ByVal hMem As Long) As Long
Private Declare Function GlobalAlloc Lib "kernel32.dll" ( _
  ByVal wFlags As Long, _
   ByVal dwBytes As Long) As Long
Private Declare Function GlobalUnlock Lib "kernel32.dll" (ByVal hMem As Long) As Long 
Private Declare Function GlobalFree Lib "kernel32.dll" (ByVal hMem As Long) As Long
 
Private Type PRINTDLG_TYPE
  lStructSize As Long
  hwndOwner As Long
  hDevMode As Long
  hDevNames As Long
  hdc As Long
  flags As Long
  nFromPage As Integer
  nToPage As Integer
  nMinPage As Integer
  nMaxPage As Integer
  nCopies As Integer
  hInstance As Long
  lCustData As Long
  lpfnPrintHook As Long
  lpfnSetupHook As Long
  lpPrintTemplateName As String
  lpSetupTemplateName As String
  hPrintTemplate As Long
  hSetupTemplate As Long
End Type
 
Private Type DEVNAMES
  wDriverOffset As Integer
  wDeviceOffset As Integer
  wOutputOffset As Integer
  wDefault As Integer
  extra As String * 100
End Type
 
Private Type DEVMODE
  dmDeviceName As String * 32
  dmSpecVersion As Integer
  dmDriverVersion As Integer
  dmSize As Integer
  dmDriverExtra As Integer
  dmFields As Long
  dmOrientation As Integer
  dmPaperSize As Integer
  dmPaperLength As Integer
  dmPaperWidth As Integer
  dmScale As Integer
  dmCopies As Integer
  dmDefaultSource As Integer
  dmPrintQuality As Integer
  dmColor As Integer
  dmDuplex As Integer
  dmYResolution As Integer
  dmTTOption As Integer
  dmCollate As Integer
  dmFormName As String * 32
  dmUnusedPadding As Integer
  dmBitsPerPixel As Integer
  dmPelsWidth As Long
  dmPelsHeight As Long
  dmDisplayFlags As Long
  dmDisplayFrequency As Long
  dmICMMethod As Long
  dmICMIntent As Long
  dmMediaType As Long
  dmDitherType As Long
  dmReserved1 As Long
  dmReserved2 As Long
  '  der folgende Abschnitt ist nur für Windows 2000 relevant
  dmPanningWidth As Long
  dmPanningHeight As Long
End Type
 
' PRINTDLG_TYPE flags-Konstanten
Private Const PD_ALLPAGES = &H0 ' selektiert den "Alle Seiten"-OptionButton
Private Const PD_COLLATE = &H10 ' selektiert die "Sortieren"-Checkbox
Private Const PD_DISABLEPRINTTOFILE = &H80000 ' "In Datei Drucken" deaktivieren
Private Const PD_ENABLEPRINTHOOK = &H1000 ' Hook-Prozedur soll benutzt werden
Private Const PD_ENABLEPRINTTEMPLATE = &H4000 ' benutzt Template-Namen
Private Const PD_ENABLEPRINTTEMPLATEHANDLE = &H10000 ' benutzt Template-Handles
Private Const PD_ENABLESETUPHOOK = &H2000 ' benutzt eine Hook-Prozedur für den Setup-Dialog 
Private Const PD_ENABLESETUPTEMPLATE = &H8000 ' benutzt einen Template-Namen für den  
' Setup-Dialog
Private Const PD_ENABLESETUPTEMPLATEHANDLE = &H20000 ' benutzt ein Template-Handle  
' für den Setup-Dialog
Private Const PD_HIDEPRINTTOFILE = &H100000 ' "In Datei Drucken"-Button verstecken
Private Const PD_NONETWORKBUTTON = &H200000 ' Netzwerk-Button verstecken
Private Const PD_NOPAGENUMS = &H8 '  "Von Bis" ist deaktiviert
Private Const PD_NOSELECTION = &H4 '  "Auswahl" ist deaktiviert
Private Const PD_NOWARNING = &H80 ' keine Warnungen, wenn der gewählte Drucker nicht  
' der Standarddrucker ist
Private Const PD_PAGENUMS = &H2 ' selektiert den "Von Bis"-OptionButton
Private Const PD_PRINTSETUP = &H40 ' öffnet den Drucker-Setup-Dialog
Private Const PD_PRINTTOFILE = &H20 ' selektiert die "In Datei Drucken"-Checkbox
Private Const PD_RETURNDC = &H100 ' gibt einen Device-Kontext des Druckers zurück
Private Const PD_RETURNDEFAULT = &H400 ' lädt den Standarddrucker, dazu müssen bei  
' hDevMode und hDevNames eine "0" übergeben werden
Private Const PD_RETURNIC = &H200 ' gibt einen Informations-Kontext zu dem gewählten  
' Drucker als hDC zurück
Private Const PD_SELECTION = &H1 ' selektiert die "Auswahl"-Option
Private Const PD_SHOWHELP = &H800 ' zeigt den Hilfe-Button an
Private Const PD_USEDEVMODECOPIESANDCOLLATE = &H40000 ' berücksichtigt 
' Geräteeinschränkungen und gibt nur mögliche Werte der Kopien oder des Sortierens zurück
 
' DEVMODE dmFields-Konstanten
Private Const DM_ORIENTATION = &H1 ' dmOrientation wird gefüllt/gelesen
Private Const DM_PAPERSIZE = &H2 ' dmPaperSize wird gefüllt/gelesen
Private Const DM_PAPERLENGTH = &H4 ' dmPaperLenght wird gefüllt/gelesen
Private Const DM_PAPERWIDTH = &H8 ' dmPaperWidth wird gefüllt/gelesen
Private Const DM_SCALE = &H10 ' dmScale wird gefüllt/gelesen
Private Const DM_COPIES = &H100 ' dmCopies wird gefüllt/gelesen
Private Const DM_DEFAULTSOURCE = &H200 ' dmDefaultSource wird gefüllt/gelesen
Private Const DM_PRINTQUALITY = &H400 ' dmPrintQuality wird gefüllt/gelesen
Private Const DM_COLOR = &H800 ' dmColor wird gefüllt/gelesen
Private Const DM_DUPLEX = &H1000 ' dmDuplex wird gefüllt/gelesen
Private Const DM_YRESOLUTION = &H2000 ' dmYResolution wird gefüllt/gelesen
Private Const DM_TTOPTION = &H4000 ' dmTTOption wird gefüllt/gelesen
Private Const DM_COLLATE = &H8000 ' dmCollate wird gefüllt/gelesen
Private Const DM_FORMNAME = &H10000 ' dmFormName wird gefüllt/gelesen
Private Const DM_LOGPIXELS = &H20000 ' dmLogPixels wird gefüllt/gelesen
Private Const DM_BITSPERPEL = &H40000 ' dmBitsPerPixel wird gefüllt/gelesen
Private Const DM_PELSWIDTH = &H80000 ' dmPelsWidth wird gefüllt/gelesen
Private Const DM_PELSHEIGHT = &H100000 ' dmPelsHeight wird gefüllt/gelesen
Private Const DM_DISPLAYFLAGS = &H200000 ' dmDisplayFlags wird gefüllt/gelesen
Private Const DM_DISPLAYFREQUENCY = &H400000 ' dmDisplayFrequency wird gefüllt/gelesen 
Private Const DM_ICMMETHOD = &H800000 ' dmICMMethod wird gefüllt/gelesen
Private Const DM_ICMINTENT = &H1000000 ' dmICMIntent wird gefüllt/gelesen
Private Const DM_MEDIATYPE = &H2000000 ' dmMediaType wird gefüllt/gelesen
Private Const DM_DITHERTYPE = &H4000000 ' dmDitherType wird gefüllt/gelesen
Private Const DM_PANNINGWIDTH = &H20000000 ' dmPanningWidth wird gefüllt/gelesen
Private Const DM_PANNINGHEIGHT = &H40000000 ' dmPanningHeight wird gefüllt/gelesen
 
' DEVMODE dmOrientation-Konstanten
Private Const DMORIENT_PORTRAIT = 1 ' Portrait wurde gewählt (vertikal drucken)
Private Const DMORIENT_LANDSCAPE = 2 ' Landscape wurde gewählt (horizontal drucken)
 
' DEVMODE dmPaperSize-Konstanten
Private Const DMPAPER_LETTER = 1 ' Blatt 8,5 x 11 Inch
Private Const DMPAPER_LEGAL = 5 ' Blatt 8,5 x 14 Inch
Private Const DMPAPER_10X11 = 45 ' 10 x 11 Inch
Private Const DMPAPER_10X14 = 16 ' 10 x 14 Inch
Private Const DMPAPER_11X17 = 17 ' 11 x 17 Inch
Private Const DMPAPER_15X11 = 46 ' 15 x 11 Inch
Private Const DMPAPER_9X11 = 44 ' 9 x 11 Inch
Private Const DMPAPER_A_PLUS = 57 ' A Plus Blatt
Private Const DMPAPER_A2 = 66 ' DIN A2 Blatt
Private Const DMPAPER_A3 = 8 ' DIN A3 Blatt
Private Const DMPAPER_A3_EXTRA = 63 ' DIN A3 Extra Blatt
Private Const DMPAPER_A3_EXTRA_TRANSVERSE = 68 ' DIN A3 Extra Blatt querlaufend
Private Const DMPAPER_A3_TRANSVERSE = 67 ' DIN A3 Blatt querlaufend
Private Const DMPAPER_A4 = 9 ' DIN A4 Blatt
Private Const DMPAPER_A4_EXTRA = 53 ' DIN A4 Extra Blatt
Private Const DMPAPER_A4_PLUS = 60 ' DIN A4 Plus Blatt
Private Const DMPAPER_A4_TRANSVERSE = 55 ' DIN A4 querlaufend
Private Const DMPAPER_A4SMALL = 10 ' DIN A4 klein (210 x 297 Millimeter) Blatt
Private Const DMPAPER_A5 = 11 ' DIN A5 Blatt
Private Const DMPAPER_A5_EXTRA = 64 ' DIN A5 Extra Blatt
Private Const DMPAPER_A5_TRANSVERSE = 61 ' DIN A5 querlaufend
Private Const DMPAPER_B_PLUS = 58 ' B Plus Blatt
Private Const DMPAPER_B4 = 12 ' B4 Blatt
Private Const DMPAPER_B5 = 13 ' B5 Blatt
Private Const DMPAPER_B5_EXTRA = 65 ' B5 Extra Blatt
Private Const DMPAPER_B5_TRANSVERSE = 62 ' B5 Blatt querlaufend
Private Const DMPAPER_CSHEET = 24 ' C Blatt (17 x 22 Inch)
Private Const DMPAPER_DSHEET = 25 ' D Blatt (22x34 Inch)
Private Const DMPAPER_ENV_10 = 20 ' Briefumschlag 10 (4,125 x 9,5 Inch)
Private Const DMPAPER_ENV_11 = 21 ' Briefumschlag 11 (4,5 x 10,375 Inch)
Private Const DMPAPER_ENV_12 = 22 ' Briefumschlag 12 (4,75 x 11 Inch)
Private Const DMPAPER_ENV_14 = 23 ' Briefumschlag 14 (5 x 11,5 Inch)
Private Const DMPAPER_ENV_9 = 19 ' Briefumschlag 9 (3,875 x 8,875 Inch)
Private Const DMPAPER_ENV_B4 = 33 ' Briefumschlag B4 (250 x 353 Millimeter)
Private Const DMPAPER_ENV_B5 = 34 ' Briefumschlag B5 (176 x 250 Millimeter)
Private Const DMPAPER_ENV_B6 = 35 ' Briefumschlag B6 (176 x 125 Millimeter)
Private Const DMPAPER_ENV_C3 = 29 ' Briefumschlag C3 (324 x 458 Millimeter)
Private Const DMPAPER_ENV_C4 = 30 ' Briefumschlag C4 (229 x 324 Millimeter)
Private Const DMPAPER_ENV_C5 = 28 ' Briefumschlag C5 (162 x 229 Millimeter)
Private Const DMPAPER_ENV_C6 = 31 ' Briefumschlag C6 (114 x 162 Millimeter)
Private Const DMPAPER_ENV_C65 = 32 ' Briefumschlag 10 (4,125 x 9,5 Inch)
Private Const DMPAPER_ENV_DL = 27 ' Briefumschlag 10 (4,125 x 9,5 Inch)
Private Const DMPAPER_ENV_INVITE = 47 ' Einladungs-Briefumschlag
Private Const DMPAPER_ENV_ITALY = 36 ' Italienischer Briefumschlag (110 x 230 Millimeter) 
Private Const DMPAPER_ENV_MONARCH = 37 ' Monarchischer Briefumschlag (3,875 x 7,5 Inch) 
Private Const DMPAPER_ENV_PERSONAL = 38 ' Persönlicher Briefumschlag (3,625 x 6,5 Inch) 
Private Const DMPAPER_ESHEET = 26 ' E Blatt (34 x 44 Inch)
Private Const DMPAPER_EXECUTIVE = 7 ' Executive Blatt (7.25 x 10,5 Inch)
Private Const DMPAPER_FANFOLD_LGL_GERMAN = 41 ' Deutscher Rechtlicher Fanfold (8,5 x  
' 13 Inch)
Private Const DMPAPER_FANFOLD_STD_GERMAN = 40 ' Deutscher Standard Fanfold (8,5 x 12 Inch) 
Private Const DMPAPER_FANFOLD_US = 39 ' US Standard Fanfold (14,875 + 11 Inch)
Private Const DMPAPER_FIRST = 1 ' Blatt 8,5 x 11 Inch
Private Const DMPAPER_FOLIO = 14 ' Folin 8,5 + 13 Inch
Private Const DMPAPER_ISO_B4 = 42 ' ISO B4 Blatt
Private Const DMPAPER_JAPANESE_POSTCARD = 43 ' Japanische Postkarte
Private Const DMPAPER_LAST = 41 ' Deutscher Rechtlicher Fanfold (8,5 x 13 Inch)
Private Const DMPAPER_LEDGER = 4 ' Ledger (17x11 Inch)
Private Const DMPAPER_LEGAL_EXTRA = 51 ' Rechtlich Extra
Private Const DMPAPER_LETTER_EXTRA = 50 ' Blatt Extra
Private Const DMPAPER_LETTER_EXTRA_TRANSVERSE = 56 ' Blatt Extra querlaufend
Private Const DMPAPER_LETTER_PLUS = 59 ' Blatt Plus
Private Const DMPAPER_LETTER_TRANSVERSE = 54 ' Blatt querlaufend
Private Const DMPAPER_LETTERSMALL = 2 ' Blatt klein (8,5 x 11 Inch)
Private Const DMPAPER_NOTE = 18 ' Note Blatt (8,5 x 11 Inch)
Private Const DMPAPER_QUARTO = 15 ' Quarto Blatt (215 x 275 Millimeter)
Private Const DMPAPER_STATEMENT = 6 ' Statement Blatt (5,5 x 8,5 Inch)
Private Const DMPAPER_TABLOID = 3 ' Tabloid Blatt (11 x 17 Inch)
Private Const DMPAPER_TABLOID_EXTRA = 52 ' Tabloid Extra Blatt
Private Const DMPAPER_USER = 256 ' benutzerdefinierte Größe
 
' DEVMODE dmDefaultSource-Konstanten
Private Const DMBIN_ONLYONE = 1 ' Nur ein Blatt
Private Const DMBIN_UPPER = 1 ' Behälter Oben
Private Const DMBIN_LOWER = 2 ' Behälter Unten
Private Const DMBIN_MIDDLE = 3 ' Behälter Mitte
Private Const DMBIN_MANUAL = 4 ' Behälter mit manueller Füllung
Private Const DMBIN_ENVELOPE = 5 ' Briefumschlag Behälter
Private Const DMBIN_ENVMANUAL = 6 ' Briefumschlag Behälter mit manueller Füllung
Private Const DMBIN_AUTO = 7 ' Automatisches füllen
Private Const DMBIN_TRACTOR = 8 ' Blatt Einzug
Private Const DMBIN_SMALLFMT = 9 ' kleines Format laden
Private Const DMBIN_LARGEFMT = 10 ' großes Format laden
Private Const DMBIN_LARGECAPACITY = 11 ' Große Kapazität
Private Const DMBIN_CASSETTE = 14 ' Blatt Kassette
Private Const DMBIN_FORMSOURCE = 15 ' Form Papier Quelle
 
' DEVMODE dmPrintQuality-Konstanten
Private Const DMRES_DRAFT = -1 ' Entwurf
Private Const DMRES_LOW = -2   ' niedrig
Private Const DMRES_MEDIUM = -3 ' mittel
Private Const DMRES_HIGH = -4 ' hoch
 
' DEVMODE dmColor-Konstanten
Private Const DMCOLOR_MONOCHROME = 1 ' Gerät unterstützt keine Schwarzweißausgabe
Private Const DMCOLOR_COLOR = 2 ' Gerät unterstützt keine Farbausgabe
 
' DEVMODE dmDuplex-Konstanten
Private Const DMDUP_SIMPLEX = 1 ' einseitiges Drucken
Private Const DMDUP_VERTICAL = 2 ' beidseitig drucken bei vertikalem Seitenwechsel
Private Const DMDUP_HORIZONTAL = 3 ' beidseitig drucken bei Horizontalem Seitenwechsel 
 
' DEVMODE dmTTOption-Konstanten
Private Const DMTT_BITMAP = 1 ' druckt TrueType-Fonts als Grafiken
Private Const DMTT_DOWNLOAD = 2 ' druckt Downloaded TrueType-Fonts als Soft-Fonts
Private Const DMTT_SUBDEV = 4 ' druckt Geräte-Fonts statt TrueType-Fonts
 
' DEVMODE dmCollate-Konstanten
Private Const DMCOLLATE_FALSE = 0 ' Drucker kann keine Seiten sortieren
Private Const DMCOLLATE_TRUE = 1 ' Drucker kann Seiten sortieren
 
' DEVMODE dmDisplayFlags-Konstanten
Private Const DM_GRAYSCALE = 1 ' Gerät unterstützt keine Farben, Grautöne werden unterstützt 
Private Const DM_INTERLACED = 2 ' Gerät unterstützt Farben
 
' DEVMODE dmICMMethod-Konstanten
Private Const DMICMMETHOD_NONE = 1 ' ICM ist abgeschaltet
Private Const DMICMMETHOD_SYSTEM = 2 ' ICM wird von Windows gesteuert
Private Const DMICMMETHOD_DRIVER = 3 ' ICM wird vom Treiber gesteuert
Private Const DMICMMETHOD_DEVICE = 4 ' ICM wird vom Gerät gesteuert
 
' DEVMODE dmICMIntent-Konstanten
Private Const DMICM_SATURATE = 1 ' Sättigung wird optimiert
Private Const DMICM_CONTRAST = 2 ' Kontrast wird optimiert
Private Const DMICM_COLORMETRIC = 3 ' exakte Farben
 
' DEVMODE dmMediaType-Konstanten
Private Const DMMEDIA_STANDARD = 1 ' Standardpapier
Private Const DMMEDIA_GLOSSY = 2 ' Fotopapier
Private Const DMMEDIA_TRANSPARECNY = 3 ' Folie
 
' DEVMODE dmDitherType-Konstanten
Private Const DMDITHER_NONE = 1 ' Kein Dithering
Private Const DMDITHER_COARSE = 2 ' Dithering mit grobem Brush
Private Const DMDITHER_FINE = 3 ' Dithering mit feinem Brush
Private Const DMDITHER_LINEART = 4 ' Linien mit schwarz, weiß und grau
Private Const DMDITHER_GRAYSCALE = 5 ' Grauskala
 
' GlobalAlloc wFlags-Konstanten
Private Const GHND = &H40 ' Kombination von GMEM_MOVEABLE mit GMEM_ZEROINIT
Private Const GMEM_DDESHARE = &H2000 ' optimiert den Speicher mit der DDE
Private Const GMEM_DISCARDABLE = &H100 ' Speicher kann überschrieben werden, kann  
' nicht mit GMEM_FIXED kombiniert werden
Private Const GMEM_FIXED = &H0 ' fixiert den Speicher und die Funktion gibt einen  
' Pointer zurück
Private Const GMEM_MOVEABLE = &H2 ' der Speicher ist beweglich
Private Const GMEM_NOCOMPACT = &H10 ' Speicher wird nicht minimiert oder andere  
' Blöcke für ihn überschrieben
Private Const GMEM_NODISCARD = &H20 ' überschreibt keine überschreibbaren Blöcke um  
' den Speicher zu reservieren
Private Const GMEM_ZEROINIT = &H40 ' initialisiert den Inhalt des Speicherblocks bei ' 0 
Private Const GPTR = &H42 ' kombiniert GMEM_FIXED und GEMEM_ZEROINIT
' zeigt einen voreingestellten Drucker-Dialog an und wertet diesen aus
Private Sub Command1_Click()
  Dim RetVal As Long
  Dim hMemMode As Long, pMemMode As Long
  Dim hMemName As Long, pMemName As Long
  Dim PD  As PRINTDLG_TYPE, Dev_Mode  As DEVMODE, Dev_Names As DEVNAMES
 
 
  ' Drucker festlegen, der standardmäßig ausgewählt sein soll
  With Dev_Mode
    .dmSize = Len(Dev_Mode)
    .dmDeviceName = Printer.DeviceName
    .dmFields = DM_PRINTQUALITY
  End With
 
  ' Speicherblock erstellen und Dev_Mode hineinkopieren
  hMemMode = GlobalAlloc(GMEM_MOVEABLE Or GMEM_ZEROINIT, Len(Dev_Mode))   _
  ' Speicherblock erstellen
  pMemMode = GlobalLock(hMemMode) ' Speicherblock sperren und Pointer ermitteln
  MoveMemory ByVal pMemMode, Dev_Mode, Len(Dev_Mode) ' Struktur in den  
  ' Speicherblock kopieren
  GlobalUnlock hMemMode ' Speicherblock entsperren
 
 
  ' Drucker-Eigenschaften zur Überprüfung festlegen
  With Dev_Names
    .wDriverOffset = Len(Printer.DriverName)
    .wDeviceOffset = .wDriverOffset + 1 + Len(Printer.DriverName)
    .wOutputOffset = .wDeviceOffset + 1 + Len(Printer.Port)
    .extra = Printer.DriverName & vbNullChar & Printer.DeviceName &  _
    vbNullChar & Printer.Port & vbNullChar
  End With
 
  ' Speicherblock erstellen und Dev_Names hineinkopieren
  hMemName = GlobalAlloc(GMEM_MOVEABLE Or GMEM_ZEROINIT, Len(Dev_Names))  _
  ' Speicherblock erstellen
  pMemName = GlobalLock(hMemName) ' Speicherblock sperren und Pointer ermitteln
  MoveMemory ByVal pMemName, Dev_Names, Len(Dev_Names) ' Struktur in den  
  ' Speicherblock kopieren
  GlobalUnlock hMemName ' Speicherblock entsperren
 
 
  ' Dialog-Eigenschaften setzen
  With PD
    .hInstance = App.hInstance
    .hwndOwner = Me.hWnd
    .lStructSize = Len(PD)
    .hDevMode = hMemMode
    .hDevNames = hMemName
    .flags = PD_DISABLEPRINTTOFILE Or PD_RETURNDC Or PD_ALLPAGES Or  _
    PD_PAGENUMS Or PD_USEDEVMODECOPIESANDCOLLATE
    .nFromPage = 1
    .nToPage = 15
    .nMinPage = 1
    .nMaxPage = 15
  End With
 
 
  ' Dialog aufrufen
  RetVal = PrintDlg(PD)
  If RetVal = 0 Then
    MsgBox "Es ist ein Fehler aufgetreten oder sie haben auf Abbrechen  _
    gedrückt.", vbInformation, "Aufrufen des Dialoges"
    GlobalFree PD.hDevMode ' Speicherblock zerstören
    GlobalFree PD.hDevNames ' Speicherblock zerstören
    Exit Sub
  End If
 
 
  ' Dev_Mode wieder aus dem Speicherblock in die Struktur kopieren und  
  ' Speicherblock zerstören
  pMemMode = GlobalLock(PD.hDevMode) ' Speicherblock sperren
  MoveMemory Dev_Mode, ByVal pMemMode, Len(Dev_Mode) ' Daten aus dem  
  ' Speicherblock in die Struktur kopieren
  GlobalUnlock PD.hDevMode ' Speicherblock entsperren
  GlobalFree PD.hDevMode ' Speicherblock zerstören
 
 
  ' Dev_Names wieder aus dem Speicherblock in die Struktur kopieren und  
  ' Speicherblock zerstören
  pMemName = GlobalLock(PD.hDevNames)  ' Speicherblock sperren
  MoveMemory Dev_Names, ByVal pMemName, Len(Dev_Names) ' Daten aus dem  
  ' Speicherblock in die Struktur kopieren
  GlobalUnlock PD.hDevNames ' Speicherblock entsperren
  GlobalFree PD.hDevNames ' Speicherblock zerstören
 
 
  ' ermittelte Daten auswerten
  Debug.Print "Gewählter Drucker: " & Dev_Mode.dmDeviceName
  Debug.Print "zu Druckende Seiten: " & PD.nFromPage & " bis " & PD.nToPage
  Debug.Print "Anzahl Kopien: " & Dev_Mode.dmCopies
  Debug.Print "Sortieren: " & CStr(CBool(Dev_Mode.dmCollate))
 
  If CBool(Dev_Mode.dmPrintQuality And DMRES_HIGH) = True Then
    Debug.Print "Druck Qualität: Hoch"
  ElseIf CBool(Dev_Mode.dmPrintQuality And DMRES_MEDIUM) = True Then
    Debug.Print "Druck Qualität: Mittel"
  ElseIf CBool(Dev_Mode.dmPrintQuality And DMRES_LOW) = True Then
    Debug.Print "Druck Qualität: Niedrig"
  ElseIf CBool(Dev_Mode.dmPrintQuality And DMRES_DRAFT) = True Then
    Debug.Print "Druck Qualität: Entwurf"
  End If
  Debug.Print "- - - - - - - - - - - - "
 
 
  ' Device-Kontext freigeben
  DeleteObject PD.hdc
End Sub

Diese Seite wurde bereits 4.700 mal aufgerufen.

nach obenzurück
 
   

Druckansicht Druckansicht Copyright ©2000-2014 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