Code: Alles auswählen
EnableExplicit
Prototype.s GetDefaultPrinter(Printer.s, *buffer)
Prototype.i SetDefaultPrinter(Printer.p-unicode)
Procedure.s GetDefaultPrinter()
Protected DLL.i = OpenLibrary(#PB_Any, "winspool.drv")
Protected _GetDefaultPrinter.GetDefaultPrinter
Protected Size.i, Result.s
If DLL
CompilerIf #PB_Compiler_Unicode
_GetDefaultPrinter = GetFunction(DLL, "GetDefaultPrinterW")
CompilerElse
_GetDefaultPrinter = GetFunction(DLL, "GetDefaultPrinterA")
CompilerEndIf
If _GetDefaultPrinter
_GetDefaultPrinter(#NUL$, @Size)
If Size
Result = Space(Size)
_GetDefaultPrinter(Result, @Size)
EndIf
EndIf
CloseLibrary(DLL)
EndIf
ProcedureReturn Result
EndProcedure
Procedure.i SetDefaultPrinter(Printer.s)
Protected DLL.i = OpenLibrary(#PB_Any, "winspool.drv")
Protected _SetDefaultPrinter.Setdefaultprinter
Protected Result.i
If DLL
_SetDefaultPrinter = GetFunction(DLL, "SetDefaultPrinterW")
If _SetDefaultPrinter
Result = _SetDefaultPrinter(Printer)
EndIf
CloseLibrary(DLL)
EndIf
ProcedureReturn Result
EndProcedure
; erst den DefaultPrinter zwischenspeichern
Define.s DefaultPrinter = Getdefaultprinter()
; jetzt Deinen Drucker setzen (in diesem Beispiel den PDF-Drucker von Adobe)
If SetDefaultPrinter("Adobe PDF")
; hier drucken
; DefaultPrinter()
; StartPrinting(JobName$)
; ....
; StopPrinting()
; Drucker zurücksetzen
SetDefaultPrinter(DefaultPrinter)
EndIf