Как получить Информацию о Принтере в.NET?

47
задан John Saunders 28 July 2010 в 15:02
поделиться

5 ответов

Как dowski предложил , Вы могли использовать WMI для получения свойств принтера. Следующий код отображает все свойства для данного названия принтера. Среди них Вы найдете: PrinterStatus, Комментарий, Местоположение, DriverName, PortName, и т.д.

using System.Management;

...

string printerName = "YourPrinterName";
string query = string.Format("SELECT * from Win32_Printer WHERE Name LIKE '%{0}'", printerName);

using (ManagementObjectSearcher searcher = new ManagementObjectSearcher(query))
using (ManagementObjectCollection coll = searcher.Get())
{
    try
    {
        foreach (ManagementObject printer in coll)
        {
            foreach (PropertyData property in printer.Properties)
            {
                Console.WriteLine(string.Format("{0}: {1}", property.Name, property.Value));
            }
        }
    }
    catch (ManagementException ex)
    {
        Console.WriteLine(ex.Message);
    }
}
72
ответ дан Community 26 November 2019 в 19:27
поделиться

Это должно работа.

using System.Drawing.Printing;

...

PrinterSettings ps = new PrinterSettings();
ps.PrinterName = "The printer name"; // Load the appropriate printer's setting

После этого, различное свойства из PrinterSettings могут быть считаны.

Примечание, которое ps.isValid() видит, существует ли принтер на самом деле.

Редактирование: Один дополнительный комментарий. Microsoft рекомендует, чтобы Вы использовали PrintDocument и изменили его PrinterSettings вместо того, чтобы создать PrinterSettings непосредственно.

23
ответ дан Powerlord 26 November 2019 в 19:27
поделиться
6
ответ дан John Sheehan 26 November 2019 в 19:27
поделиться

Обратите внимание, что статья, на которую ссылались dowski и Panos ( MSDN Win32_Printer ), может быть немного вводящим в заблуждение.

Я имею в виду первое значение большинства массивов. некоторые начинаются с 1, а другие начинаются с 0. Например, « ExtendedPrinterStatus » первое значение в таблице равно 1, поэтому ваш массив должен выглядеть примерно так:

string[] arrExtendedPrinterStatus = { 
    "","Other", "Unknown", "Idle", "Printing", "Warming Up",
    "Stopped Printing", "Offline", "Paused", "Error", "Busy",
    "Not Available", "Waiting", "Processing", "Initialization",
    "Power Save", "Pending Deletion", "I/O Active", "Manual Feed"
};

и С другой стороны, первое значение в таблице « ErrorState » равно 0, поэтому ваш массив должен выглядеть примерно так:

string[] arrErrorState = {
    "Unknown", "Other", "No Error", "Low Paper", "No Paper", "Low Toner",
    "No Toner", "Door Open", "Jammed", "Offline", "Service Requested",
    "Output Bin Full"
};

BTW, « PrinterState » устарел, но вы можете использовать « PrinterStatus ».

3
ответ дан itsho 26 November 2019 в 19:27
поделиться

Это было долгое время, так как я работал в среде Windows, но я предложил бы, чтобы Вы посмотрели WMI использования.

2
ответ дан dowski 26 November 2019 в 19:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: