在我的应用程序(Windows 7,VS2010)中,我必须在成功打印图像后减少信用计数器。 无论如何,在开始整个过程之前,我想了解一下打印机的状态,以便在出纸,卡纸等情况下提醒用户。 现在,环顾四周,我发现了几个使用Windows WMI的例子,但是......从来没有用过。例如,使用THIS片段,如果我取出纸张,打开盖板,则关闭打印机,打印机状态始终处于准备就绪状态。c#检查打印机状态
现在打印机的状态总是很好,我从办公室测试在家中舒适地关闭的打印机。 有我通过炸药引爆设备,以便有打印机错误状态?
这是 'PRINTERNAME' 被接收为参数,我用
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)
{
string name = objWMI["Name"].ToString().ToLower();
if (name.Equals(printerName.ToLower()))
{
int state = Int32.Parse(objWMI["ExtendedPrinterStatus"].ToString());
if ((state == 1) || //Other
(state == 2) || //Unknown
(state == 7) || //Offline
(state == 9) || //error
(state == 11) //Not Available
)
{
throw new ApplicationException("hope you are finally offline");
}
state = Int32.Parse(objWMI["DetectedErrorState"].ToString());
if (state != 2) //No error
{
throw new ApplicationException("hope you are finally offline");
}
}
}
的代码。
谢谢你的建议。
当你发现某些有用的东西时,记住你必须应付所有这些情况出现*因为*你也打印 - 炸药可能会在检查状态和实际开始打印作业之间关闭。 – 2011-02-15 09:52:19
可以怪WMI。大多数打印机驱动程序不会正确更新打印机状态以供WMI选择。我们遇到过不同的问题 – 2011-02-15 10:28:14
你在看什么打印机? – 2011-05-09 16:15:48