Comment obtenir la liste de toutes les imprimantes sur ordinateur

Je dois obtenir la liste de toutes les imprimantes connectées à l’ordinateur?

Comment puis-je le faire en C #, WinForms?

Essaye ça:

foreach (ssortingng printer in System.Drawing.Printing.PrinterSettings.InstalledPrinters) { MessageBox.Show(printer); } 

Si vous avez besoin de plus d’informations que le nom de l’imprimante, vous pouvez utiliser l’API System.Management pour les interroger:

 var printerQuery = new ManagementObjectSearcher("SELECT * from Win32_Printer"); foreach (var printer in printerQuery.Get()) { var name = printer.GetPropertyValue("Name"); var status = printer.GetPropertyValue("Status"); var isDefault = printer.GetPropertyValue("Default"); var isNetworkPrinter = printer.GetPropertyValue("Network"); Console.WriteLine("{0} (Status: {1}, Default: {2}, Network: {3}", name, status, isDefault, isNetworkPrinter); } 

Examinez la propriété statique System.Drawing.Printing.PrinterSettings.InstalledPrinters .

C’est une liste des noms de toutes les imprimantes installées sur le système.

Obtenir la liste des imprimantes réseau et locales dans ASP.NET

Cette méthode utilise Windows Management Instrumentation ou l’interface WMI. C’est une technologie utilisée pour obtenir des informations sur divers systèmes (matériels) fonctionnant sur un système d’exploitation Windows.

 private void GetAllPrinterList() { ManagementScope objScope = new ManagementScope(ManagementPath.DefaultPath); //For the local Access objScope.Connect(); SelectQuery selectQuery = new SelectQuery(); selectQuery.QuerySsortingng = "Select * from win32_Printer"; ManagementObjectSearcher MOS = new ManagementObjectSearcher(objScope, selectQuery); ManagementObjectCollection MOC = MOS.Get(); foreach (ManagementObject mo in MOC) { lstPrinterList.Items.Add(mo["Name"].ToSsortingng()); } } 

Cliquez ici pour télécharger la démo de la source et de l’application

Démo de l’application répertoriant le réseau et l’imprimante locale

entrer la description de l'image ici

  public List InstalledPrinters { get { return (from PrintQueue printer in new LocalPrintServer().GetPrintQueues(new[] { EnumeratedPrintQueueTypes.Local, EnumeratedPrintQueueTypes.Connections }).ToList() select printer.Name).ToList(); } }