Druckerliste rausbekommen...

  • WPF

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von EugenIS.

    Druckerliste rausbekommen...

    Hallo Leute und danke für's reinschauen...

    kann mir jemand helfen eine Liste von installierten Druckern zu bekommen OHNE Windows.Forms!

    Ich wollte die Namen von allen Druckern in der DB speichern, sodass ich später einen Dokument konstant eine DB-Id mitgebe auf welchem Drucker es gedruckt wird.

    Finde irgend wie nichts vernümftiges. Alles entweder über dll, oder irgend was was sowieso nicht läuft... 8|

    Danke im Voraus.
    Zeig halt wie du es verwendest. Vermutlich musst du das EnumeratedPrintQueueTypes.Shared rausnehmen und nur die Local Printer anzeigen.
    Je nachdem welche Drucker du sehen willst.
    Alternativ kannst du auch einfach
    .GetPrintQueues ohne Parameter verwenden für alle Drucker
    Das ist meine Signatur und sie wird wunderbar sein!
    Also ich habe arbeitsbedingt letztens so etwas programmieren müssen, allerdings via Forms, aber kann man ja in bspw. Console übernehmen.
    Den Code kann ich dir gerne geben.
    Es werden die Drucker in einer Listbox angezeigt:

    VB.NET-Quellcode

    1. Imports System.IO
    2. Public Class Form1
    3. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
    4. End Sub
    5. Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    6. sprinter.ShowDialog()
    7. If sprinter.PrinterSettings.PrinterName = sprinter.PrinterSettings.PrinterName Then
    8. lbl_printer.Text = sprinter.PrinterSettings.PrinterName
    9. btn_save.Enabled = True
    10. Else
    11. MsgBox("Sie müssen einen Drucker auswählen.", MsgBoxStyle.Critical, "Fehler")
    12. End If
    13. End Sub
    14. Private Sub btn_save_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_save.Click
    15. Try
    16. IO.File.WriteAllText("config.HuK", lbl_printer.Text)
    17. MsgBox("Der Drucker wurde erfolgreich in die Konfiguration geschrieben.", MsgBoxStyle.Information, "ERFOLGREICH")
    18. Me.Close()
    19. Catch ex As Exception
    20. MsgBox("Leider fehlen die benötigten Schreibrechte, um die Konfiguration zu speichern.", MsgBoxStyle.Critical, "FEHLER#093")
    21. End Try
    22. End Sub
    23. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    24. Me.Close()
    25. End Sub
    26. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    27. If Not My.Computer.FileSystem.FileExists("config.HuK") Then
    28. IO.File.Create("config.HuK")
    29. Process.Start("RESET_Printer.exe")
    30. Me.Close()
    31. End If
    32. End Sub
    33. End Class

    Releases:
    IceTea | QR-Converter by NudelHolz - einfach Text & URL zu QR Konvertieren.

    fichz schrieb:

    @NudelHolz Zeile 11 ist immer true, da es Ein und die Selbe Property ist die du abfragst.

    lg


    Da ich aber nachdem das Fenster zu ist, nen event brauche - hab ich es mit nem if gemacht. natürlich kann man auch das dialog-result abfragen, aber naja.

    Releases:
    IceTea | QR-Converter by NudelHolz - einfach Text & URL zu QR Konvertieren.
    @NudelHolz
    Mal abgesehen davon, das du den My Namespace verwendest, Form1, Button1 und Button2 benennst (wobei du eine leere Button1_click Methode hast), man nix zu sprinter weiß und dieser Part:

    VB.NET-Quellcode

    1. If sprinter.PrinterSettings.PrinterName = sprinter.PrinterSettings.PrinterName Then

    keine Funktion hat, ist dein Code komplett unbrauchbar für den TE.

    Was soll denn RESET_Printer.Exe sein, was ist diese Huk konfig.
    Damit kann man so nix anfangen.

    Hier mal ein einfaches Beispiel für alle Printer..

    C#-Quellcode

    1. LocalPrintServer printServer = new LocalPrintServer();
    2. PrintQueueCollection printQueuesOnLocalServer = printServer.GetPrintQueues();
    3. foreach (PrintQueue printer in printQueuesOnLocalServer)
    4. {
    5. Debug.Print("\tThe printer " + printer.Name + " is located at " + printer.Location + "\n");
    6. }
    Das ist meine Signatur und sie wird wunderbar sein!