Printerabfrage[ERLEDIGT]

Von Ausgaben mit der Gra-Engine über Generatoren bis zum Export in diversen Formaten

Moderator: Moderatoren

Antworten
Benutzeravatar
Muecke
1000 working lines a day
1000 working lines a day
Beiträge: 623
Registriert: Di, 24. Okt 2006 7:19
Wohnort: Samstagern CH
Hat sich bedankt: 3 Mal
Danksagung erhalten: 9 Mal
Kontaktdaten:

Printerabfrage[ERLEDIGT]

Beitrag 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
Zuletzt geändert von Muecke am Di, 09. Sep 2014 11:35, insgesamt 1-mal geändert.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Printerabfrage

Beitrag von brandelh »

schau doch mal was es alles unter XbpPrinter() so gibt ...
notfalls auch XbpPrintDialog()
Gruß
Hubert
DelUser01

Re: Printerabfrage

Beitrag 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>
Benutzeravatar
Muecke
1000 working lines a day
1000 working lines a day
Beiträge: 623
Registriert: Di, 24. Okt 2006 7:19
Wohnort: Samstagern CH
Hat sich bedankt: 3 Mal
Danksagung erhalten: 9 Mal
Kontaktdaten:

Re: Printerabfrage

Beitrag von Muecke »

Besten Dank

habe in den xbpprinter wie auch im Dialog nichts gefunden.

Suche mal weiter.

Gruss Thomas
DelUser01

Re: Printerabfrage

Beitrag 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!
Benutzeravatar
Herbert
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1991
Registriert: Do, 14. Aug 2008 0:22
Wohnort: Gmunden am Traunsee, Österreich
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Printerabfrage

Beitrag 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.
Grüsse Herbert
Immer in Bewegung...
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2932
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: Printerabfrage

Beitrag von Wolfgang Ciriack »

Schau dir mal das Posting von Jimmy an:
http://www.xbaseforum.de/viewtopic.php? ... 094#p90329
Viele Grüße
Wolfgang
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Printerabfrage

Beitrag 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 !
Dateianhänge
PrinterInfos.zip
(1.83 KiB) 420-mal heruntergeladen
Gruß
Hubert
Benutzeravatar
Muecke
1000 working lines a day
1000 working lines a day
Beiträge: 623
Registriert: Di, 24. Okt 2006 7:19
Wohnort: Samstagern CH
Hat sich bedankt: 3 Mal
Danksagung erhalten: 9 Mal
Kontaktdaten:

Re: Printerabfrage

Beitrag von Muecke »

Hallo

Besten Dank für Euro Infos.

Hubert genau das hab ich gesucht

Besten Dank

Gruss Thomas =D>
Antworten