Consoleanwendung Standarddrucker temporär ändern

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Achilleus.

    Consoleanwendung Standarddrucker temporär ändern

    Hallo Leute,

    ich möchte eine kleine Console-Anwendunger erstellen, mit der ich Dateien ausdrucken möchte. Das klappt auch einwandfrei. :)

    Nun möchte ich aber vorher ggf. den Standarddrucker temporär ändern und nach dem Ausdruck wieder auf den alten Drucker zurücksetzen.
    Hat einer eine Idee wie ich das am einfachsten machen kann?

    Vielen Dank im Voraus.

    Gruß Achilleus
    Shamelessly copied and modified from MSDN

    VB.NET-Quellcode

    1. Imports System.Runtime.InteropServices
    2. Imports System.Text
    3. Module Module1
    4. <DllImport("winspool.drv")> Private Function AddPrinterConnection(pName As String) As Boolean : End Function
    5. <DllImport("winspool.drv", CharSet:=CharSet.Auto, SetLastError:=True)> Private Function SetDefaultPrinter(Name As String) As Boolean : End Function
    6. <DllImport("winspool.drv", CharSet:=CharSet.Auto, SetLastError:=True)> Private Function GetDefaultPrinter(Name As StringBuilder, ByRef NameLength As Integer) As Boolean : End Function
    7. Sub Main()
    8. PrintFile(PfadDerZuDruckendenDatei, NameDesZuVerwendendenDruckers)
    9. End Sub
    10. Private Sub PrintFile(FileName As String, PrinterName As String)
    11. If String.IsNullOrEmpty(FileName) OrElse String.IsNullOrEmpty(PrinterName) Then Return
    12. Dim DefaultPrinterName As New StringBuilder(100)
    13. Dim NameLength = 100
    14. GetDefaultPrinter(DefaultPrinterName, NameLength)
    15. AddPrinterConnection(PrinterName)
    16. SetDefaultPrinter(PrinterName)
    17. Using PrintProcess As New Diagnostics.Process
    18. PrintProcess.StartInfo.FileName = FileName
    19. PrintProcess.StartInfo.Verb = "Print"
    20. PrintProcess.StartInfo.WindowStyle = Diagnostics.ProcessWindowStyle.Hidden
    21. PrintProcess.StartInfo.UseShellExecute = True
    22. PrintProcess.Start()
    23. Threading.Thread.Sleep(1000) 'ohne dies wird der Drucker zu schnell wieder umgestellt
    24. End Using
    25. SetDefaultPrinter(DefaultPrinterName.ToString)
    26. End Sub
    27. End Module
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.