Seite 1 von 1

Nach PrintRequester() gewählten Druckernamen auslesen

Verfasst: 29.04.2016 23:09
von Fordey_ra
Ich suche eine einfache Möglichkeit nach Aufruf von PrintRequester() den gewählten Druckernamen auszulesen.

Vielen dank für eure Hilfe

Re: Nach PrintRequester() gewählten Druckernamen auslesen

Verfasst: 30.04.2016 15:29
von Shardik
Ich habe dazu für Windows bereits vor 10 Jahren im englischen Forum eine Lösung präsentiert, die allerdings nicht den PrintRequester() benutzt, sondern die Windows API-Funktion PrintDlg_(), da der PrintRequester() von PureBasic leider nicht die DEVNAMES-Struktur zurückgibt, die ausgelesen werden muß. Edwin Knoppert hatte in diesem Beispiel noch einige Unzulänglichkeiten meiner Lösung behoben.

Ich habe dieses alte Beispiel gerade noch einmal unter Windows 7 x64 SP1 ausprobiert und noch den Fehler behoben, dass das Beispiel nicht im Unicode-Modus funktionierte. Das untenstehende modifizierte Beispiel habe ich erfolgreich mit PB 5.42 (x86 und x64) im ASCII- und Unicode-Modus unter Windows 7 getestet:

Code: Alles auswählen

PrintDlg.PRINTDLG 
PrintDlg\hDevMode = 0 
PrintDlg\hDevNames = 0 
PrintDlg\lStructSize = SizeOf(PRINTDLG) 
PrintDlg\Flags = #PD_ALLPAGES 

If PrintDlg_(PrintDlg) <> #False 
    *DEVNAMES.DEVNAMES = GlobalLock_(PrintDlg\hDevNames) 
    MessageRequester("Printer Device Name", PeekS(*DEVNAMES + *DEVNAMES\wDeviceOffset * SizeOf(Character)), #MB_ICONINFORMATION)
    GlobalUnlock_(PrintDlg\hDevNames) 
EndIf 

; Only at the end of the app 
GlobalFree_(PrintDlg\hDevNames)

Re: Nach PrintRequester() gewählten Druckernamen auslesen

Verfasst: 01.05.2016 21:36
von Fordey_ra
Super genau das habe ich gesucht.
Funktioniert auch unter Windows 10.

Danke :allright: