2 Stimmen

Warum erhält PrintServer.GetPrintQueues nicht das richtige PrintTicket, während PrintServer.GetPrintQueue es tut?

Wenn ich versuche, alle Drucker abzurufen und durch sie zu iterieren mit :

        Dim printServer As New PrintServer()         
        For Each printer As PrintQueue In printServer.GetPrintQueues({EnumeratedPrintQueueTypes.Local, EnumeratedPrintQueueTypes.Connections})
            ...
        Next

Es scheint, als ob es einwandfrei funktioniert, nur das UserPrintTicket für die zurückgegebenen Drucker ist inkorrekt. Wenn ich einen Drucker im Querformat in den Druckereinstellungen einstelle und diese Methode verwende, ist mein printer.UserPrintTicket immer noch im Hochformat.

ABER (und das ist das Problem) wenn ich folgendes mache :

        printServer.GetPrintQueue(printerName)

Dann ist mein UserPrintTicket korrekt. Ich würde das verwenden, nur kann ich anscheinend nicht herausfinden, wie ich Netzwerkdrucker mit dieser Funktion abrufen kann (und ich habe mehrere Möglichkeiten ausprobiert, kein Glück).

Also hier sind meine zwei Fragen :

  1. Warum zum Teufel sind die UserPrintTicket unterschiedlich zwischen zwei scheinbar identischen Methoden?
  2. Wie kann ich Netzwerkdrucker mit GetPrintQueue abrufen?

3voto

Thierry Mathez Punkte 101

Okay, ich habe versucht, dieses Problem größtenteils den ganzen Tag gestern zu lösen, und heute Morgen habe ich endlich die Lösung gefunden. Ich weiß immer noch nicht, warum 1) UserPrintTicket zwischen GetPrintQueues und GetPrintQueue unterschiedlich ist, aber um alle meine Drucker aufzulisten und den richtigen UserPrintTicket für jeden zu erhalten, müssen Sie GetPrintQueue auf dem HostingPrintServer des Druckers aufrufen, damit es funktioniert. Mit anderen Worten :

        Dim printServer As New PrintServer()

        Für jeden Drucker wie PrintQueue In printServer.GetPrintQueues({EnumeratedPrintQueueTypes.Local, EnumeratedPrintQueueTypes.Connections})
              'Holen Sie den übergeordneten PrintServer und verwenden Sie ihn, um die PrintQueue zu erhalten, es scheint übertrieben, aber das ist der einzige Weg, den ich gefunden habe, um das richtige UserPrintTicket zu erhalten    
              Dim currentPrinter As PrintQueue = printer.HostingPrintServer.GetPrintQueue(printer.Name)
              ...
        Nächster

Hoffentlich hilft das jemandem!

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X