私は、ユーザーが印刷する前にプリンタを選ぶことができるアプリケーションを持っています。 .Netプリンタ選択ダイアログから返された情報を使用して、プリンタと直接SNMPを介して通信する方法を見つけることができる必要があります。私のアプリケーションの要件の1つは、プリンタが一時停止中または紙詰まり中やオフライン中や紙切れ中など、プリンタに印刷ジョブを送信しないということです。この情報は、プリンタの種類によってSNMP経由でのみ取得できます。IPプリンタとの直接通信チャネルを見つける
WMIクエリを使用してプリンタ情報を取得し、そのWMIクエリのShareNameとServerNameの値を使用して、そのプリンタへの通信チャネルを導出しています。これは1年以上も働いています。
最近、ここのネットワークチームは、アプリケーションを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