Nach PrintRequester() gewählten Druckernamen auslesen

Anfängerfragen zum Programmieren mit PureBasic.
Fordey_ra
Beiträge: 71
Registriert: 17.08.2010 22:30

Nach PrintRequester() gewählten Druckernamen auslesen

Beitrag von Fordey_ra »

Ich suche eine einfache Möglichkeit nach Aufruf von PrintRequester() den gewählten Druckernamen auszulesen.

Vielen dank für eure Hilfe
Benutzeravatar
Shardik
Beiträge: 746
Registriert: 25.01.2005 12:19

Re: Nach PrintRequester() gewählten Druckernamen auslesen

Beitrag 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)
Fordey_ra
Beiträge: 71
Registriert: 17.08.2010 22:30

Re: Nach PrintRequester() gewählten Druckernamen auslesen

Beitrag von Fordey_ra »

Super genau das habe ich gesucht.
Funktioniert auch unter Windows 10.

Danke :allright:
Antworten