Ich erstelle ein kleines Plug-in für eine Anwendung, die C# verwendet, um die Drucker basierend auf dem zu druckenden Dokument automatisch umzuschalten. Mit C# Ich habe eine Liste von Druckern, die auf dem System installiert sind, muss aber die Spooler-ID/Name und den Verbindungstyp für jeden Drucker bestimmen.Abrufen des Druckerspooler-Namens und Verbindungstyps
Im Wesentlichen ändere ich einen Registrierungsschlüssel, den die Host-Anwendung verwendet, um den Standarddrucker für den nächsten Druck zu verwenden, und der Wert hat das Format Druckername; Spooler, Verbindungstyp, der für verschiedene Drucker eindeutig zu sein scheint. Hier
ist ein Beispiel für den Wert I konstruieren müssen: HP LaserJet 5500,winspool,Ne01:
ich den Druckernamen haben, nur nicht sicher, wie die anderen params für jeden Drucker abzurufen.
Das Codefragment, das ich verwende, um die Liste der Drucker abzurufen, basiert auf System.Drawing;
foreach (string printer in PrinterSettings.InstalledPrinters)
Console.WriteLine(printer);
var printerSettings = new PrinterSettings();
Console.WriteLine(printerSettings.PrinterName);
}
foreach (string printer in PrinterSettings.InstalledPrinters)
Console.WriteLine(printer);
var printerSettings = new PrinterSettings();
Console.WriteLine(printerSettings.PrinterName);
}
Danke für den Vorschlag @DRapp. Leider konnte ich die gesuchten Parameter nicht finden, konnte jedoch eine funktionierende Lösung bereitstellen. Naiv, nachdem ich die Registrierungswerte beim Ändern des Standarddruckers und die eindeutigen Werte für jeden Drucker untersucht hatte, nahm ich an, dass die letzten zwei Parameter benötigt wurden, um das zu spiegeln, was ich beim Umschalten im Betriebssystem sah. Ich bin mir nicht sicher, warum, aber es stellt sich heraus, dass es funktioniert, wenn ich wie im Beispiel 'Druckername, winspool, Ne01:' verlasse und einfach den Namen des Druckers ändere. Ich wünschte nur, ich hätte es vorher versucht! Danke für die Hilfe – Ashley