Je dois obtenir la liste de toutes les imprimantes connectées à un ordinateur?
Comment puis-je le faire en C #, WinForms?
Essaye ça:
foreach (string 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 le System.Management
API 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 réseaux et des imprimantes 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ériel) 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.QueryString = "Select * from win32_Printer";
ManagementObjectSearcher MOS = new ManagementObjectSearcher(objScope, selectQuery);
ManagementObjectCollection MOC = MOS.Get();
foreach (ManagementObject mo in MOC)
{
lstPrinterList.Items.Add(mo["Name"].ToString());
}
}
Cliquez ici pour télécharger la démonstration de la source et de l'application
Démo de l'application qui énumère une imprimante réseau et locale
public List<string> InstalledPrinters
{
get
{
return (from PrintQueue printer in new LocalPrintServer().GetPrintQueues(new[] { EnumeratedPrintQueueTypes.Local,
EnumeratedPrintQueueTypes.Connections }).ToList()
select printer.Name).ToList();
}
}