ExProgramm öffnet sich beim Druck eines Dokumentes

  • VB.NET

Es gibt 18 Antworten in diesem Thema. Der letzte Beitrag () ist von petaod.

    ExProgramm öffnet sich beim Druck eines Dokumentes

    Guten Morgen liebe VBler,


    ich habe vor einen Druckauftrag an den Standarddrucker zu senden.
    Die Datei ist eine .rtf. Jetzt liegt das Problem darin, dass wenn ich den Druckauftrag starte, sich Word öffnet den Auftrag losschickt und sich wieder schließt.


    VB.NET-Quellcode

    1. Dim DruckSI As New ProcessStartInfo
    2. DruckSI.UseShellExecute = True
    3. DruckSI.Verb = "print"
    4. DruckSI.CreateNoWindow = True
    5. DruckSI.WindowStyle = ProcessWindowStyle.Hidden
    6. DruckSI.FileName = rtfPfad
    7. Process.Start(DruckSI)




    Jetzt scheint jedoch der WindowStyleHidden für das Dokument zu gelten und nicht für das Word Programm, welches den Druckauftrag absendet. Ich habe mir Überlegt ob ich nicht sofort Word aufrufen kann mit Parametern das dass angegebene Dokument gedruckt werden soll. Leider habe ich mehrere Tage vergeblich damit Verbracht, eine Parameterliste von Word zu bekommen. Habt ihr eine Idee wie ich das sonst noch lösen kann also ohne das sich auch nur kurz ein Programm öffnet ?


    EDIT:


    So ich habe nochmals bei Microsoft selber gesucht. Leider gibt es keinen Parameter der das sofortige Drucken eines Dokumentes Startet :/

    Habt ihr noch Ideen ?

    Mal ein Paar mehr Infos wieso das Fenster nicht Sichbar sein soll:

    Das Fenster soll nicht angezeigt werden da, wenn sich Word öffnet andere Programme die Im Vollbildmodus laufen, verkleinern. Ziel der ganzen geschichte ist das dass Programm welches im Vollbild läuft, sich nicht Verkleinert sondern im Vollbildmodus weiter arbeitet.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „symphonie89“ () aus folgendem Grund: Damit alle infos gesammelt sind

    Leider auch nicht da das Programm dann nicht weis, wie er das Dokument Öffnen soll. Somit gibt es dann zurück das die Datei keine Ausführbare Datei ist. Da müsste ich dann wieder Word angeben und hätte das selbe Problem wieder. :/
    Du kannst auch die Word.Application öffnen, die Property "Hidden" setzen, das Dokument öffnen und drucken.

    Fragt sich, was du bei Usern machst, die kein Word installiert haben.
    Da geht das schief.
    Den Fehler musst du abfangen und dann den bisherigen Weg gehen, damit Wordpad verwendet wird.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Die Vorraussetzung ist Word installiert zu haben. Klar kann ich Word öffnen mit dem Parameter des Dokumentenpfades aber genau das ist ja die Frage im Ersten Post ich brauche ÜbergabeParameter wonach ich schon sehr lange gesucht habe. Leider gottes Erfolglos

    //EDIT:
    in mainpost verschoben

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „symphonie89“ ()

    Muss ich da noch irgendwas zu Importieren oder so der Intellisense gibt mir keine Hilfestellung dazu. Der Sagt mir nur ich solle

    VB.NET-Quellcode

    1. Dim WordApp As Word.Application

    in

    VB.NET-Quellcode

    1. Dim WordApp As Application

    ändern.

    Ist der Code für eine andere VB Version ? Ich nutze Visual Studio 2010 Ultimate

    Lg und danke schonmal für deine Hilfe
    Geh mal über Process, nicht über ProcessStartInfo.
    Dies funktioniert bei mir, das Blatt kommt beim Standarddrucker raus:

    VB.NET-Quellcode

    1. Dim pr As New Process
    2. pr.StartInfo.FileName = "C:\Temp\Test\new.txt"
    3. pr.StartInfo.Verb = "Print"
    4. pr.StartInfo.CreateNoWindow = True
    5. pr.Start()
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @RodFromGermany

    Habe es gerade getestet nach genau deinem Schema, leider funktioniert auch dies nicht verhält sich gleich wie meine Variante. Mit einer TXT würde es Eventuell Funktionieren aber ich benutze eine .rtf Datei die wird Stadnardmäßig mit Word geöffnet wie es auch sein soll. Wie gesagt Word Öffnet sich mit.
    Dieses Konstrukt funktioniert bei mir mit allen (getesteten) Dateitypen, DOC, PDF, TXT, JPG usw. :S
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Okay. Ich denke das es selbst bei dir öffnet (word) du es aber nicht siehst weil das so schnell geht. Mach dir mal eine Datei mit vielen Seiten muss ja nichts großes sein einfach C&P von nem satz über 10 seiten oder so das ist ja schnell gemacht. Dann wirst du sehen das sich auch bei dir Word öffnet
    und falls nicht ............ Dann weiss ich auch nicht mehr was ich aber eher weniger glaube
    Jetzt haste mich echt wuschig gemacht. :S
    Hab ein 30-Seiten-PDF getestet, hier mit 2008 kommt der Acrobat hoch.
    Zu Hause mit 2010 bin ich mir eigentlich sicher, dass da kein Programm mit hochkommt. :S
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Habe noch ne Anfänger-Idee zu dem Thema, jedenfalls wenn nur rtf verarbeitet werden muss. Ist wahrscheinlich von hinten durch die Brust... bzw. übel dirty:

    Man könnte doch die rtf-Datei in eine rtf-Box laden (MyRTFBox.LoadFile("MeineDatei") und deren Inhalt an einen PrintDialog senden. Geht sogar ganz ohne Word. Habe aber mit ner rtf-Box noch nicht rumgemacht und kann daher nicht sagen, welche Haken da lauern.

    RTF-Datei an PrintDialog senden (aus msdn-Hilfe):

    VB.NET-Quellcode

    1. Private Sub PrintCommand()
    2. Dim pd As New PrintDialog()
    3. If (pd.ShowDialog() = True) Then
    4. 'use either one of the below
    5. pd.PrintVisual(TryCast(richTB, Visual), "printing as visual")
    6. pd.PrintDocument(((CType(richTB.Document, DocumentPaginatorSource)).DocumentPaginator), "printing as paginator")
    7. End If
    8. End Sub
    Ich code nur 'just for fun'! Damit kann ich jeden Mist entschuldigen, den mein Interpreter verdauen muss :D

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marsianer“ ()

    Eigentlich eine ganz tolle Idee...
    Habe das schon mal vor ein Paar Wochen ausprobiert. Ich wollte einer Textdatei in die RTB einladen und dort dann das ganze gestalten (fett etc.) da dieses vorhaben aber zulange gedauert hat habe ich mich von dem Gedanken an die RTB verabschiedet. Aber jetzt kann ich es nochmals über eine RTB probieren da ich keinerlei Formatierungen im Text mehr vornehmen muss.

    Ich werde mal bescheid geben wie das Funktioniert hat.


    //EDIT:

    So eingebaut und Ausprobiert
    Das Problem bei dieser Variante ist das die Datei in die RTB zwar Komplett eingelesen wird
    aber ein Seitenumbruch nicht Dargestellt wird. Im Anhang habe ich einmal das Projekt gelegt
    welches die Datei in die RTB ließt und dann per Button drucken soll
    Dateien

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „symphonie89“ ()

    Habe nochmal über das Thema nachgeforscht. Und siehe da, ist hier im Forum 2011 besprochen worden. Schau dir mal den letzten Post von RodFromGermany an: Hier
    Ich code nur 'just for fun'! Damit kann ich jeden Mist entschuldigen, den mein Interpreter verdauen muss :D
    Ich hab jetzt noch mal mit VC 2010 probiwert und etliche längere und unterschiedliche Dokumente getestet, es erscheint so, dass, wo wenig vorzubereiten ist (PDF) ist der Reader nur sehr kurz zu sehen, dagegen bei Excel braucht er eine ganze Menge Zeit im Vollbild.
    Der Marsianer-Link beschreibt eine von RichTextBox abgeleitete Klasse, die eine ganze Menge kann.
    Wenn das für Dich interessant ist, probier es mal aus. :thumbup:
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!