vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
DTA-Dateien erstellen inkl. BLZ-/Kontonummernpr?fung  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   RSS-Feeds  | Newsletter  | Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2015
 
zurück
Rubrik: Windows/System15.03.02
GlobalUnlock-Funktion

Diese Funktion hebt die Verriegelung der GlobalLock-Funktion wieder auf.

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

Summer-Special bei Tools & Components!
Gute Laune Sommer bei Tools & Components
Top Summer-Special - Sparen Sie teilweise über 100,- EUR
Alle sev-Entwicklerkomponenten und Komplettpakete jetzt bis zu 25% reduziert!
zum Beispiel:
  • Developer CD nur 455,- EUR statt 569,- EUR
  • sevDTA 2.0 nur 224,30 EUR statt 299,- EUR
  •  
  • vb@rchiv   Vol.6 nur 18,70 EUR statt 24,95 EUR
  • sevCoolbar 3.0 nur 58,70 EUR statt 69,- EUR
  • - Werbung -Und viele weitere Angebote           Aktionspreise nur für kurze Zeit gültig

    Deklaration:

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


    Beschreibung:

    Diese Funktion hebt die Verriegelung der GlobalLock-Funktion wieder auf.


    Parameter:

    hMemErwartet das Handle zu dem Speicherblock, dessen Verriegelung aufgehoben werden soll.


    Rückgabewert:

    Wurde das "Unlocken" durchgeführt und ist aber der Speicherblock noch nicht "Ungelockt" weil die Funktion GlobalLock zu oft aufgerufen wurde so ist die Rückgabe "1". Tritt ein Fehler auf oder wurde der Speicherblock "Ungelockt" so ist die Rückgabe "0".


    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.126 mal aufgerufen.

    nach obenzurück
     
       

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