Drucker

  • Einen schönen Feiertag!

    Ich hab eine Frage zur Funktion _flieprint() aus der file udf, mit der Funktion ist es möglich sowohl txt als auch rtf Dokumente zu drucken, jedoch nur mit dem Standartdrucker.
    Ich weis das es bereits die printmgv2 udf gibt und die Möglichkeit via rundll32 zu drucken.
    Oder vor jedem Ausdruck den Primärdrucker neu zu setzen und dann mit fileprint zu drucken.
    Aber ich würde das gerne ohne diese Varianten machen und möchte sofern das möglich ist die _fileprint() Funktion verwenden und dabei einen weiteren Paramater übergeben (den Drucker an den der Auftrag gehen soll).
    Nur was auch immer ich versuche ich kriege das nicht hin.
    Mir ist wichtig das dabei kein Druckerdialogfenster erscheint, sondern die Datei direkt an den angegeben Drucker geht.

    Sry für das Durcheinandern und danke schonmal.

  • Du könntest es mit CMD machen:

    [autoit]


    $Port = "LPT1"
    $Datei = "C:\Test.txt"
    Run(@ComSpec & " /c print /d:" & $Port & " " & $Datei , "", @SW_HIDE)

    [/autoit]

    Grüße MM.

    Einmal editiert, zuletzt von MadMushroom (2. Mai 2013 um 06:03)

  • Danke für die Antwort aber das funktioniert nur mit lokal angeschlossenen Geräten, bei mir handelt es sich um 3 Netzwerkdrucker.
    Eine andere Möglichkeit ist es aber den Drucker an einem Computer einzurichten und im Netzwerk freizugeben und dann via (cmd,shellexec->) copy "datei.txt" "\\computerpfad\Druckername", zu drucken.
    Leider funktioniert das nur mit Textdokumenten (txt) und es werden keine Abschlussbefehle gesendet.

    Einmal editiert, zuletzt von Clericer (2. Mai 2013 um 11:35)

  • Leider macht das nur das gleiche wie copy "datei" "\\computer\Drucker".
    Auf die Art werden RTF Dokumente wie txt Dateien behandelt und der Abschlussbefehl für die Seite wird auch nicht mitgesendet.
    Aber gibt es denn für die Rundll32 keinen befehl, wohin der Auftrag gehen soll?
    Gibt es keine Möglichkeit das Druckerfenster am öffnen zu hindern und beim (versteckten) öffnen die Adresse für den Drucker zu übergeben?

  • Danke, aber vielleicht bin ich dafür zu blöd, ich habe alle Druckprozessoren durchprobiert.
    Ich glaube das Problem liegt darin, dass der Druckauftrag direkt an den Drucker gesendet wird, was bei den rundll-Aufrufen nicht der Fall ist.

    [autoit]


    RunWait(@ComSpec & ' /c rundll32.exe ' & @SystemDir & '\mshtml.dll,PrintHTML "' & $PrintFile, @TempDir, @SW_show)

    [/autoit]


    Hierbei wird der Internet explorer zum drucken verwendet
    und mit :_fileprint() wird die Standartanwendung für den Dateitypen geöffnet und der Druckauftrag dann erst über das geöffnete Dokument gedruckt.
    Copy "Datei" \\drucker s.w. print /d: .... sendet das Dokument direkt an den Drucker.