在我的應用程序(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