SetDefaultPrinter / GetDefaultPrinter ... ?
Verfasst: 21.01.2025 17:47
				
				Ich beziehe mich auf folgendes Beispiel aus dem Jahr 2010 von TS-Soft: viewtopic.php?p=263605#p263605
Gibt es da auch etwas für Linux?
			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