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

Code: Alles auswählen

aPaperBins: = oPrinter:paperBins()
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
Schau dir mal das Posting von Jimmy an:
http://www.xbaseforum.de/viewtopic.php? ... 094#p90329

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>