2010-03-01 9 views

Respuesta

139

Prueba esto:

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

¡También funciona para WPF, agradable! – kjhf

32

Si necesita más información que sólo el nombre de la impresora, puede utilizar la API de System.Management para consultar ellas:

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); 
} 

Ejemplo tomado de: http://www.snippetsource.net/Snippet/96/list-all-installed-printers

3

Obtener lista de impresoras locales y de red en ASP.NET

Este método utiliza el Instrumental de administración de Windows o la interfaz WMI. Es una tecnología utilizada para obtener información sobre varios sistemas (hardware) que se ejecutan en un sistema operativo 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()); 
      } 
     } 

Click here to download source and application demo

Demostración de aplicación que aparece a la red y la impresora local

enter image description here

+0

es su demo en ASP.NET también? – AaA

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

¿Puedes agregar una explicación para seguir el código? – jhpratt

Cuestiones relacionadas