- Obtenez l'imprimante par défaut de
LocalPrintServer.DefaultPrintQueue
- Obtenez les imprimantes installées (du point de vue de l'utilisateur) de
PrinterSettings.InstalledPrinters
- Énumérer par la liste:
- Toute imprimante en commençant par
\\
est une imprimante réseau - donc obtenir la file d'attente avec new PrintServer("\\UNCPATH").GetPrintQueue("QueueName")
- Toute imprimante ne commençant pas par
\\
est une imprimante locale pour l'obtenir avec LocalPrintServer.GetQueue("Name")
- Vous pouvez voir ce qui est par défaut en comparant
FullName
propriété.
Remarque: une imprimante réseau peut être l'imprimante par défaut à partir LocalPrintServer.DefaultPrintQueue
, mais apparaissent pas dans LocalPrintServer.GetPrintQueues()
// get available printers
LocalPrintServer printServer = new LocalPrintServer();
PrintQueue defaultPrintQueue = printServer.DefaultPrintQueue;
// get all printers installed (from the users perspective)he t
var printerNames = PrinterSettings.InstalledPrinters;
var availablePrinters = printerNames.Cast<string>().Select(printerName =>
{
var match = Regex.Match(printerName, @"(?<machine>\\\\.*?)\\(?<queue>.*)");
PrintQueue queue;
if (match.Success)
{
queue = new PrintServer(match.Groups["machine"].Value).GetPrintQueue(match.Groups["queue"].Value);
}
else
{
queue = printServer.GetPrintQueue(printerName);
}
var capabilities = queue.GetPrintCapabilities();
return new AvailablePrinterInfo()
{
Name = printerName,
Default = queue.FullName == defaultPrintQueue.FullName,
Duplex = capabilities.DuplexingCapability.Contains(Duplexing.TwoSidedLongEdge),
Color = capabilities.OutputColorCapability.Contains(OutputColor.Color)
};
}).ToArray();
DefaultPrinter = AvailablePrinters.SingleOrDefault(x => x.Default);
AvailablePrinterInfo est dans quel namespace? Get as Error Le type ou le nom de l'espace de noms 'AvailablePrinterInfo' est introuvable (manque-t-il une directive using ou une référence d'assembly –