VB.NET Wysłanie pliku na drukarkę bez otwierania w aplikacji

0

Witam
Przyszło mi do głowy napisanie prostej aplikacji, z początku miałem w głowie plan, że linii kodu będzie może max 10 i będzie działać, ale napotkałem dziwny problem. Otóż aplikacja po wciśnięciu przycisku button3 ma za zadanie odnaleźć na moim dysku plik test.txt i wysłać go na domyślną drukarkę kod wygląda tak:

  Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        Dim psi As New ProcessStartInfo
        psi.UseShellExecute = True
        psi.Verb = "print"
        psi.WindowStyle = ProcessWindowStyle.Hidden
        psi.Arguments = PrintDialog1.PrinterSettings.PrinterName.ToString()
        psi.FileName = "D://faktury/test.txt"
        Process.Start(psi)

    End Sub 

Problem jest taki, że odnajduje plik ale nie wysyła go na drukarkę tylko otwiera okno dialogowe do zapisania pliku jako *XPS i dopiero po zapisaniu wysyła plik na drukarkę. Główny cel tej aplikacji jest taki, że ma działać bez ingerencji człowieka. Proszę o pomoc co zrobić, żeby program nie wymuszał zapisania tego pliku jako XPS ewentualnie, żeby zapisywał automatycznie jako XPS bez wyskakującego okna dialogowego tak aby aplikacja była cały czas tylko zminimalizowana na pasku i pracowała sama.

user image
Tutaj jeszcze okno ustawień printdialog ale nie wiem czy to ważneuser image

0

Twoja domyślna drukarka, czyli wirtualna drukarka generująca pliki XPS po prostu działa w ten sposób, że zlecenie jej wydruku otwiera okno wyboru gdzie ten plik wygenerowany ma się zapisać. Na innych drukarkach będzie to działać inaczej. To jest poza twoją kontrolą.

Jedyne, co mi przychodzi do głowy, to zasymulowanie naciśnięcia w tym oknie dialogowym klawisza "zapisz" po uprzednim podaniu nazwy pliku.

1

Ustaw w systemie właściwą domyślną drukarkę.

0

Dlaczego nie wykorzystujesz System.Drawing.Printing api https://msdn.microsoft.com/en-us/library/system.drawing.printing.printersettings.printername(v=vs.110).aspx?cs-save-lang=1&cs-lang=vb#code-snippet-2 ?
Możesz ustawić docelową drukarkę przez modyfikację pd.PrinterSettings.PrinterName

0

faktycznie wystarczyło ustawić drukarkę na domyślną na kompie bo wcześniej robiłem program na innym sprzęcie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1