Seite 1 von 1
Printerabfrage[ERLEDIGT]
Verfasst: Fr, 05. Sep 2014 19:41
von Muecke
Hallo zusammen
ist es möglich bei einem Drucker MFC-J6510DW die Einstellungen abzufragen.
Duplexdrucken, anzahl Seite pro Blatt, eigentlich alles was heute ein Multiprinter kann ??
Gruss Thomas
Re: Printerabfrage
Verfasst: Fr, 05. Sep 2014 20:19
von brandelh
schau doch mal was es alles unter XbpPrinter() so gibt ...
notfalls auch XbpPrintDialog()
Re: Printerabfrage
Verfasst: Fr, 05. Sep 2014 21:16
von DelUser01
Hallo Thomas
vielleicht hilft Dir das weiter:
Code: Alles auswählen
Function GsLaserPrnStatList
Local oPrinter := XbpPrinter():new()
Local oParent := AppDeskTop()
Local nCnt1 := 0
Local nCnt2 := 0
Local nLen := 0
Local cPrinter := ""
Local aPaperBins := {}
Local nAnz := 0
Local cLogFile := GsTempFileLocal() + ".txt"
Local cLog := ""
IF oPrinter:List() == NIL
oPrinter:Destroy()
GsLaserNoPrinters( "GsLaserPrnStatList()" )
Else
GsWartenEin()
nLen := Len( oPrinter:List() )
cLog += "Druckerliste" + dcCRLF
For nCnt1 := 1 To nLen
cPrinter := oPrinter:List()[nCnt1]
oPrinter:create( cPrinter )
cLog += dcCRLF
cLog += "Drucker: " + cPrinter + dcCRLF
aPaperBins := NIL
xtGsErrBlkBreak()
Begin Sequence
aPaperBins := oPrinter:paperBins()
End Sequence
xtGsErrBlkLast()
If aPaperBins == NIL
cLog += "keine Sch„chte oder Fehler beim Abfragen" + dcCRLF
Else
nAnz := Len( aPaperBins )
If nAnz == 0
cLog += "keine Sch„chte" + dcCRLF
Else
cLog += "Schachtliste" + dcCRLF
For nCnt2:=1 To nAnz
cLog += "Schacht-ID: " + Var2Char( aPaperBins[nCnt2,1] ) + " Name: " + aPaperBins[nCnt2,2] + dcCRLF
Next nCnt2
EndIf
EndIf
oPrinter:Destroy()
Next nCnt1
cLog += dcCRLF
cLog += dcCRLF
cLog += "<Ende der Liste>" + dcCRLF
GsWriteToFile( cLogFile , ConvToAnsiCP( cLog ) , .T. , .F. )
GsEditorNotepadStart( cLogFile , .T. )
GsWartenAus()
EndIf
Return( .T. )
Das wird so bei Dir nicht laufen, zu viele weitere Parts von mir drin. Sollte aber nicht zu schwierig sein das für Dich umzuschreiben.
Die Liste sieht dann ungefähr so aus (gekürzt):
- Druckerliste
Drucker: Microsoft XPS Document Writer
Schachtliste
Schacht-ID: 15 Name: Automatisch auswählen
Drucker: Brother PC-FAX v.2.2
keine Schächte
Drucker: Adobe PDF
Schachtliste
Schacht-ID: 15 Name: Automatisch auswählen
Schacht-ID: 257 Name: OnlyOne
Drucker: \\dc2\BrotherGDI
Schachtliste
Schacht-ID: 7 Name: Automatische Zufuhr
Schacht-ID: 1 Name: Zufuhr 1
Schacht-ID: 258 Name: MF-Zuführung
Schacht-ID: 4 Name: Manuell
<Ende der Liste>
Re: Printerabfrage
Verfasst: Fr, 05. Sep 2014 21:29
von Muecke
Besten Dank
habe in den xbpprinter wie auch im Dialog nichts gefunden.
Suche mal weiter.
Gruss Thomas
Re: Printerabfrage
Verfasst: Fr, 05. Sep 2014 23:24
von DelUser01
Hallo Thomas
Du musst halt in meinem Beispiel die benötigten Abfragen einbauen.
z.B. dort wo die Abfrage steht
kannst Du auch abfragen
Code: Alles auswählen
lDuplex := oPrinter:setDuplexMode()
nCopies := oPrinter:setNumCopies()
usw.
Wie Hubert schon schrieb: schaue in der Doku bei XbpPrinter nach, da steht einiges...
viel Erfolg!
Re: Printerabfrage
Verfasst: Sa, 06. Sep 2014 11:03
von Herbert
Thomas, falls du die gesuchten Parameter über xbpprinter nicht findest, kannst du entweder mit (aus der Hilfe):
:devParams
Zusätzliche Parameter für spezielle Druckertreiber.
Beschreibung
Die Instanzvariable :devParams enthält erst nach dem Aufruf der Methode :create() eine Zeichenkette. Sie stellt zusätzliche Parameter für spezielle Druckertreiber bereit. Diese sind geräteabhängig und müssen bei dem Druckertreiber dokumentiert sein. So kann z.B. der Treiber für einen Fax-Drucker Informationen über die Telefonnummer o.ä. benötigen, um einen Druckjob als Fax zu versenden.
Windows unterstützt keine individuellen Geräteparameter für Druckerobjekte.
oder dann halt durch Aufruf des Druckdialoges zum manuellen Einstellen
eventuell dir helfen.
Re: Printerabfrage
Verfasst: Mo, 08. Sep 2014 8:24
von Wolfgang Ciriack
Re: Printerabfrage
Verfasst: Mo, 08. Sep 2014 10:45
von brandelh
Hier habe ich ein Beispiel welche Infos mit XbpPrinter() direkt ermittelt werden können.
Grundsätzlich kann man auch alles für den Druckjob selbst neu setzen, wenn man oP:setupDialog() aufruft.
PS: ob es sich um einen Netzwerkdrucker handelt, kann man aus dem Namen schließen:
:devName => \\XYZ\Canon ... series => Netzwerkdrucker - der aktuelle Namen entspricht aber nicht unbedingt der Freigabe !
NET VIEW \\XYZ zeigt alle Freigaben an
WICHTIG: die Methoden können NIL zurückgeben, also nicht direkt oP:forms()[x,1] verwenden !
Re: Printerabfrage
Verfasst: Di, 09. Sep 2014 11:34
von Muecke
Hallo
Besten Dank für Euro Infos.
Hubert genau das hab ich gesucht
Besten Dank
Gruss Thomas =D>