Разговор с принтером - PullRequest
7 голосов
/ 20 мая 2009

Есть ли способ написать некоторый код, который может «общаться» с принтером, чтобы получить основную информацию о его состоянии? Что меня действительно интересует, так это выясняется, закончилась ли бумага или застряла ли бумага - вещи такого рода. Должен ли я использовать библиотеку System.Management для такого типа вещей?

PS. Было бы также полезно узнать, как заполучить все принтеры, установленные на конкретном ПК. Как бы вы поступили об этом?

Ответы [ 2 ]

9 голосов
/ 20 мая 2009

Получение информации от принтеров с помощью System.Management относительно просто.

    //Declare WMI Variables
    ManagementObject MgmtObject;
    ManagementObjectCollection MgmtCollection;
    ManagementObjectSearcher MgmtSearcher;

    //Perform the search for printers and return the listing as a collection
    MgmtSearcher = new ManagementObjectSearcher("Select * from Win32_Printer");
    MgmtCollection = MgmtSearcher.Get();

    foreach (ManagementObject objWMI in MgmtCollection)
    {
       //Do whatever action you want with the Printer
    }

Посмотрите на http://msdn.microsoft.com/en-us/library/aa394363.aspx методы и свойства Win32_Printer. На ваш вопрос:

//Test whether a Win32_Printer is out of paper or jammed
int state = Int32.Parse(objWMI["PrinterState"]);
if (state == 4) {
   //Paper Jam
} else if (state == 5) {
   //Paper Out
}
0 голосов
/ 21 мая 2009

Вы также можете использовать LINQ to WMI api .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...