我有一個應用程序允許用戶在打印前選擇打印機。我需要能夠使用.Net打印機選擇對話框返回的信息,找到一種通過SNMP直接與打印機進行通信的方式。我的應用程序的一個要求是,在打印機暫停,卡住或脫機或紙張用完等情況下,它不會向打印機發送任何打印作業。我只能通過SNMP獲取此類信息,以瞭解我所使用的打印機類型。尋找到IP打印機的直接通信通道
我一直在使用WMI查詢來獲取打印機信息,然後使用該WMI查詢中的ShareName和ServerName值來派生到該打印機的通信通道。這已經工作了一年多。
最近,網絡團隊將我的應用程序從Windows 2003服務器移到了Windows 2008 R2服務器。在新的2008家中使用該應用程序時,WMI查詢中的ServerName和ShareName的值始終爲空,因此無法使用現有代碼直接與打印機進行通信。
其他人是否有另一種與打印機直接通信的方式,僅基於用戶從.Net打印機選擇對話框中選擇打印機?出於本應用的目的,我們可以安全地期望打印機始終屬於同一類型並始終連接到網絡。
這是我一直在使用WMI查詢:
"SELECT * from Win32_Printer WHERE Name LIKE '%MyPrinter'"
欣賞它。
你無法使用WMI直接獲取PrinterState或PrinterStatus嗎? –
Windows本身並不能可靠地告訴我打印機是否可用,但我確實發現了一個WMI查詢,可以這樣做,但它通常會告訴我打印機在打開並準備就緒時不可用。 – omatase