Forum | | | | Schrotti Herbert | Hallo alle miteinander, Hab mal eine Frage zu Druckerauswahl und zwar ist es möglich direkt aus Xprofan einen Windowsdrucker ohne Dialog auszuwählen ( ausser den Standartdrucker) ?
Mein Problem ist das ich einmal einen Etikettendrucker und einmal den Pdf Creator verwende und das aus der gleichen Anwendung.
Bis jetzt hatte ich einen Posdrucker, welchen ich mit den Print# Befehlen füttere. Der "neue" Drucker (Zebra Stripe 300) reagiert nicht mehr auf die Befehle, denke der versteht die Esc Sequenzen nimmer. Hab mir gedacht löse das Problem einfach mit Sartprint .....Endprint usw.
Nur eben zuerst das Etikett auf dem Zebra dann eine Liste auf einem Netzwerkdrucker.
Hat vielleicht jemand eine Idee?
Bitte nicht zuviel Fachchinesisch da ich doch noch nicht allzuviel Ahnung habe. |
| | | | |
| | Thomas Freier | Mit den hier vorhanden Beispielen, würde ich einfach den Standarddrucker ermitteln, wenn er nicht der Zebra ist, diesen als Standarddrucker setzen, drucken, und den alten Standarddrucker wieder als solchen einstellen. Gibt bestimmt bessere Lösungen. |
| | | | |
| | Schrotti Herbert | Hallo Thomas Erstmal Danke für die Antwort. Ja die Idee ist mir auch schon gekommen allerdings bin ich noch nicht draufgekommen wie ich das mach.Den Standartdrucker feststellen dafür hab ich einige Beispiele gefunden. Zum umstellen aber nichts, oder bin ich blind vor Eifer......
Schöne Grüsse aus dem Alpenland / Herbert
Achja nebenher habe Winxp und Xprofan9 |
| | | | |
| | | Schau mal Ermittlung ( [...] ) : - also könnte equivalentes WriteIni funktionieren. |
| | | | |
| | E.T. | Hab mal ein wenig "gebastelt":
'############### ##########
'Drucker auflisten
'Andreas Miethe * Juni 2003
'##########################
DEF EnumPrinters(7) ! "WINSPOOL.DRV","EnumPrintersA"
DEF GetStandardPrinter(0) Substr$(ReadIni$("WIN.INI","Windows","Device"),1,",")
DEF &PRINTER_ENUM_LOCAL 2
DEF &PRINTER_ENUM_DEFAULT 1
Declare PrinterValues#, Drucker$[], Y&, Old_Standard$, Old_Standard_rest$
DEF GetStandardPrinter2(0) ReadIni$("WIN.INI","Windows","Device")
Proc EnumPrinters
Declare Printername&,Portname&,PrinterName$,PortName$,Attribs&
Declare X&,dwNeeded&,dwReturned&
EnumPrinters(&PRINTER_ENUM_LOCAL,0,5,0,0,ADDR(dwNeeded&),ADDR(dwReturned&))
Dim PrinterValues#,dwNeeded&
Clear PrinterValues#
EnumPrinters(&PRINTER_ENUM_LOCAL ,0, 5, PrinterValues#, dwNeeded&, ADDR(dwNeeded&), ADDR(dwReturned&))
While X& < dwReturned&*20
Printername& = Long(PrinterValues#,x&)
PrinterName$ = String$(Printername&,0)
Attribs& = Long(PrinterValues#,x&+8)
'folgendes funzt bei mir unter XP nicht:
' If Attribs& & $4
' Printername$ = Printername$ + " => Standarddrucker"
' endif
Drucker$[Y&] = Printername$
X& = X& + 20
inc Y&
EndWhile
Dispose PrinterValues#
Endproc
Proc Set_Std_Printer
Parameters PrinterString$
WriteIni "WIN.INI","Windows","Device"=PrinterString$
EndProc
cls
EnumPrinters
Print "Gefundene Drucker"
WhileLoop 0,Y&-1
Print "Drucker " + @str$(&loop) + " : " + Drucker$[&loop]
EndWhile
Old_Standard$ = Substr$(GetStandardPrinter2(),1,",")
Old_Standard_rest$ = Substr$(GetStandardPrinter2(),-2,",") + "," + Substr$(GetStandardPrinter2(),-1,",")
Print "***"
Print "Standard-Drucker :"
Print Old_Standard$
Print "***"
Print "Drucke auf Drucker " + Drucker$[4]
Set_Std_Printer Drucker$[4] + "," +Old_Standard_rest$
StartPrint
DrawText 10,10,"Test " + Drucker$[4]
EndPrint
Print "Drucke auf Drucker " + Drucker$[2]
Set_Std_Printer Drucker$[2]+","+Old_Standard_rest$
StartPrint
DrawText 10,10,"Test " + Drucker$[2]
EndPrint
Print "***"
Print " >>>alten Standart-Drucker wieder einstellen.."
Set_Std_Printer Old_Standard$+","+Old_Standard_rest$
Print "Standard : " + Old_Standard$
Print "***"
Print ""
Print "...warte"
waitinput
end
erzeugt bei mir folgendes Fenster (sieht nat. bei jedem anders aus, je nach install. Druckern...)
und funktioniert wunderbar. Bei pdf kommt die Abfrage "wo speichern", und bei Fax wird nach 'ner Fax-Nummer gefragt. Also werden die Drucker richtig gesetzt.
Möge jeder daraus machen, was er will ... |
| | | Grüße aus Sachsen... Mario WinXP, Win7 (64 Bit),Win8(.1),Win10, Win 11, Profan 6 - X4, XPSE, und 'nen schwarzes, blinkendes Dingens, wo ich das alles reinschütte... | 11.01.2011 ▲ |
| |
| | Thomas Freier | Vielleicht auch so als Anregung. Beim Programmstart "sammel" ich die Drucker ein auf EnumPrinters ist ja hier eingegangen worden.
Und mache dann einen Menüpunkt zur Auswahl
Umstellen über
mit
Proc STAND_DRUCKER
Parameters p.Item%
WhileLoop GetCount(Lv.p&)
CheckMenu (200+&Loop),0
EndWhile
stdevice$=@GetString$(LV.p&,(p.Item%-201))
stdriv$= @ADD$(@substr$(@readini$("win.ini","devices",stdevice$),1,","),".drv")
stport$=@substr$(@readini$("win.ini","devices",stdevice$),2,",")
zusammen$=stdevice$;",";substr$(stdriv$,1,".");",";stport$
writeini "win.ini","windows","device"=zusammen$
SendMessage($FFFF,$001A,0,"windows")
Std_Druck$=stdevice$
SetText Stat&, 2, "Drucker: "+Std_Druck$
CheckMenu p.Item%,1
EndProc
Und/ oder die Drucker-Grundeinstellung anbieten, wenn kein Dialog verwendet wird
Ist die auch noch unter WIN7 gültig? |
| | | | |
| | Dieter Zornow | @ET:
dein Old_Standard_rest$ kann schwer schiefgehen, wenn Windows das nicht selbst korrigiert. Nicht jeder Drucker hat den gleichen Port usw. |
| | | Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai., Win 7 32 bit und Win 7 64 bit, mit XProfan X2 | 11.01.2011 ▲ |
| |
| | E.T. | Dieter Zornow (11.01.11)
dein Old_Standard_rest$ kann schwer schiefgehen, wenn Windows das nicht selbst korrigiert. Nicht jeder Drucker hat den gleichen Port usw.
Dieser Old_Standard_rest$ ist ja eigentlich nur ein Verweis für 16-Bit-Programme, damit diese ihre Druckaufträge an den Spooler schicken können (Kompatiblität - steht auch nicht in der Win.ini sondern unter HKEY_CURRENT_USER\Printers).
Habs mal umgeschrieben, so das (bei mir) der passende Eintrag geschrieben wird:
'############### ##########
'Drucker auflisten
'Andreas Miethe * Juni 2003
'##########################
DEF EnumPrinters(7) ! "WINSPOOL.DRV","EnumPrintersA"
DEF GetStandardPrinter(0) Substr$(ReadIni$("WIN.INI","Windows","Device"),1,",")
DEF &PRINTER_ENUM_LOCAL 2
DEF &PRINTER_ENUM_DEFAULT 1
Declare PrinterValues#, Drucker$[], Y&, Old_Standard$, Old_Standard_rest$
DEF GetStandardPrinter2(0) ReadIni$("WIN.INI","Windows","Device")
Proc EnumPrinters
Declare Printername&,Portname&,PrinterName$,PortName$,Attribs&
Declare X&,dwNeeded&,dwReturned&
EnumPrinters(&PRINTER_ENUM_LOCAL,0,5,0,0,ADDR(dwNeeded&),ADDR(dwReturned&))
Dim PrinterValues#,dwNeeded&
Clear PrinterValues#
EnumPrinters(&PRINTER_ENUM_LOCAL ,0, 5, PrinterValues#, dwNeeded&, ADDR(dwNeeded&), ADDR(dwReturned&))
While X& < dwReturned&*20
Printername& = Long(PrinterValues#,x&)
PrinterName$ = String$(Printername&,0)
Attribs& = Long(PrinterValues#,x&+8)
'folgendes funzt bei mir unter XP nicht:
' If Attribs& & $4
' Printername$ = Printername$ + " => Standarddrucker"
' endif
Drucker$[Y&] = Printername$ + ",winspool,Ne0" + @str$(Y&) + ":"
X& = X& + 20
inc Y&
EndWhile
Dispose PrinterValues#
Endproc
Proc Set_Std_Printer
Parameters PrinterString$
WriteIni "WIN.INI","Windows","Device"=PrinterString$
EndProc
cls
EnumPrinters
Print "Gefundene Drucker"
WhileLoop 0,Y&-1
Print "Drucker " + @str$(&loop) + " : " + Substr$(Drucker$[&loop],1,",")
EndWhile
Print "***"
Print "Standard-Drucker :"
Old_Standard$ = ReadIni$("WIN.INI","Windows","Device")
Print Substr$(Old_Standard$,1,",")
Print "***"
Print "Setze Std.-Drucker : " + Substr$(Drucker$[4],1,",")
Set_Std_Printer Drucker$[4]
Print " Drucke auf Drucker : " + Substr$(Drucker$[4],1,",")
StartPrint
DrawText 10,10,"Test " + Drucker$[4]
EndPrint
Print "***"
Print "Setze Std.-Drucker auf : " + Substr$(Drucker$[2],1,",")
Set_Std_Printer Drucker$[2]
Print " Drucke auf Drucker : " + Substr$(Drucker$[2],1,",")
StartPrint
DrawText 10,10,"Test " + Drucker$[2]
EndPrint
Print "***"
Print ">>>alten Standart-Drucker wieder einstellen.."
Set_Std_Printer Old_Standard$
Print " Standard : " + Substr$(Old_Standard$,1,",")
Print "***"
Print ""
Print "...warte"
waitinput
end
|
| | | Grüße aus Sachsen... Mario WinXP, Win7 (64 Bit),Win8(.1),Win10, Win 11, Profan 6 - X4, XPSE, und 'nen schwarzes, blinkendes Dingens, wo ich das alles reinschütte... | 11.01.2011 ▲ |
| |
| | | Erstmal DANKE für die vielen Antworten, jetzt kann ich mir wirklich aussuchen wie ich das mache. Super bin zwar noch nicht dazu gekommen es umzusetzen,werd aber Bericht erstatten sobald geschehen.
Grüsse aus dem Alpenland / Herbert |
| | | | |
| | Erasmus.Herold | TOP !!!
Das habe ich gesucht.
Gruß - Erasmus |
| | | | |
|
AntwortenThemenoptionen | 18.331 Betrachtungen |
ThemeninformationenDieses Thema hat 7 Teilnehmer: |