Как получить список всех принтеров в компьютере


Мне нужно получить список всех принтеров, которые подключаются к компьютеру?

Как я могу сделать это в C#, WinForms?

5 80

5 ответов:

попробуйте это:

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

Если вам нужно больше информации, чем просто имя принтера, вы можете использовать System.Management API для запроса их:

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

смотреть на статический!--1--система>.Рисунок.Печатающий.Свойство printersettings.InstalledPrinters собственность.

Это список всех установленных принтеров в системе.

получить список сетевых и локальных принтеров в ASP.NET

этот метод использует инструментарий управления Windows или интерфейс WMI. Это технология, используемая для получения информации о различных системах (аппаратных средствах), работающих в операционной системе 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());
            }
        }

Нажмите здесь, чтобы загрузить демо-версию источника и приложения

демонстрация приложения, в котором перечислены сетевой и локальный принтер

enter image description here

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