wie kriege ich es hin bei der Winfunktion PrintDlg_(PrintDlg) dort einen speziellen Drucker vorzuwählen?
Hier bei dem Listing wählt er ja immer den Standartdrucker.
Ok ich könnte vor dem Requester dem SetDefaultPrinter() den Standart umbiegen, will den aber eigentlich nicht umstellen und dachte vielleicht kann man das dem Dialog irgendwie vorgeben.
Code: Alles auswählen
Prototype.s GetDefaultPrinter(Printer.s, *buffer)
Prototype.i SetDefaultPrinter(Printer.p-unicode)
Global Default_Printer.s
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(#Null$, @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
Procedure Drucker_Standart()
PrintDlg.PRINTDLG
PrintDlg\hDevMode = 0
PrintDlg\hDevNames = 0
PrintDlg\lStructSize = SizeOf(PRINTDLG)
PrintDlg\Flags = #PD_ALLPAGES | #PD_NOPAGENUMS | #PD_PRINTSETUP | #PD_USEDEVMODECOPIES | #PD_HIDEPRINTTOFILE | #PD_SELECTION
If PrintDlg_(PrintDlg) <> #False
*DEVNAMES.DEVNAMES = GlobalLock_(PrintDlg\hDevNames)
Default_Printer=PeekS(*DEVNAMES + *DEVNAMES\wDeviceOffset * SizeOf(Character))
GlobalUnlock_(PrintDlg\hDevNames)
tmp_drucker.s=GetDefaultPrinter()
SetDefaultPrinter(Default_Printer)
PrinterDC.L = DefaultPrinter()
If PrinterDC
Default_Printer_Width=PrinterPageWidth()
Default_Printer_Height=PrinterPageHeight()
EndIf
SetDefaultPrinter(tmp_drucker)
EndIf
EndProcedure
For i= 1 To 2
Drucker_Standart()
Next
Mikk