web-dev-qa-db-fra.com

Comment obtenir la liste de toutes les imprimantes dans l'ordinateur

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

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

89
Gold

Essaye ça:

foreach (string printer in System.Drawing.Printing.PrinterSettings.InstalledPrinters)
{
    MessageBox.Show(printer);
}
174
Jojo Sardez

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);
}
48
Christian Moser

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.

22
Rune Grimstad

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

enter image description here

8
Code Scratcher
    public List<string>  InstalledPrinters
    {
        get
        {
            return (from PrintQueue printer in new LocalPrintServer().GetPrintQueues(new[] { EnumeratedPrintQueueTypes.Local,
                EnumeratedPrintQueueTypes.Connections }).ToList()
                    select printer.Name).ToList(); 
        } 
    }
1
Hernan Alonso