Drucker laesst sich nicht auf Hochformat stellen
Verfasst: 04.06.2007 13:09
Hallo,
habe diesen Code im Forum gefunden, aber der Drucker läßt sich nicht bewegen, auf Hochformat zu stellen, wenn der Drucker vorher manuell auf Querdruck (Start->Drucker) eingestellt wurde.
Wie geht das, bzw funktioniert bei euch der Code korrekt.
habe diesen Code im Forum gefunden, aber der Drucker läßt sich nicht bewegen, auf Hochformat zu stellen, wenn der Drucker vorher manuell auf Querdruck (Start->Drucker) eingestellt wurde.
Wie geht das, bzw funktioniert bei euch der Code korrekt.
Code: Alles auswählen
ProcedureDLL.l Print_OpenPrint(PrinterName$)
Protected PrintLib_PN.s,res.f,PrintLib_PH.f,Buffersize.l,*DevBufferIn.l,*DevBufferOut.l,*PrinterParameters.DEVMODE
Protected lpszDriver.s,PrintLib_DC.l
If PrintLib_PN=""
PrintLib_PN=Print_GetDefaultPrinter()
Else
PrintLib_PN=PrinterName$
EndIf
res=OpenPrinter_(PrintLib_PN,@PrintLib_PH,0)
If res
Buffersize.l=DocumentProperties_(0,PrintLib_PH,PrintLib_PN,0,0,0)
If Buffersize=<0
ProcedureReturn 0
EndIf
*DevBufferIn=AllocateMemory(Buffersize)
*DevBufferOut=AllocateMemory(Buffersize)
DocumentProperties_(0,PrintLib_PH,PrintLib_PN,*DevBufferIn,*DevBufferOut,#DM_OUT_BUFFER|#DM_IN_BUFFER)
*PrinterParameters.DEVMODE=*DevBufferIn
ClosePrinter_(@PrintLib_PH)
MessageRequester("",Str(*PrinterParameters.DEVMODE\dmOrientation))
If *DevBufferIn = 1
MessageRequester("Printer Orientation","Hochformat",0)
ElseIf *DevBufferIn = 2
MessageRequester("Printer Orientation","Querformat",0)
EndIf
If GetVersion_()&$FF0000 ; Windows NT/XP
lpszDriver.s = "WINSPOOL"
Else ; Win 9x/Me
lpszDriver = ""
EndIf
;Hier wird Hochformat eingestellt.
;wenn vorher der drucker auf 1 stand und hier eine 2 eingetragen wird,
;schaltet er nicht auf Quer um bzw umgekehrt.
;der Drucker behält die manuelle Defaulteinstellung
;Warum?
*PrinterParameters.DEVMODE\dmOrientation=1
PrintLib_DC=CreateDC_(@lpszDriver,PrintLib_PN,0,*PrinterParameters)
FreeMemory(*DevBufferIn)
FreeMemory(*DevBufferOut)
Print_SetBkMode(#TRANSPARENT)
;Print_CreatePen(PrintLib_Linestyle,PrintLib_Linewidth,PrintLib_Linecolor,0,0)
ProcedureReturn PrintLib_DC
Else
ProcedureReturn 0
EndIf
EndProcedure
Print_OpenPrint("")