前提・実現したいこと
OSにインストールされたプリンターの中で「Microsoft XPS Document Writer」「OneNote 2010 に送る」などの仮想的なプリンターと、LPTやネットワークで接続された物理的なプリンターを区別して取得したいです。
現在C#でWindows サービスプログラムを作っています。
システムの要件に、他プロセスからのリクエストを受け、バックグラウンドでプリンター出力するという事項があり、機能実装しています。
この際に、出力先を物理的なプリンターのみに限定したいため、OSにインストールされたプリンターの中で、どれが前述した物理的なプリンターなのかを区別したいのです。
該当のソースコード
PrinterSettings.InstalledPrintersを使った取得を試みましたが、いい感じの情報は得られませんでした
C#
1using System.Drawing; 2 3Printing.PrinterSettings.StringCollection installedPrinters = Printing.PrinterSettings.InstalledPrinters; 4var pd = new Printing.PrintDocument(); 5foreach (string s in installedPrinters) 6{ 7 pd.PrinterSettings.PrinterName = s; 8 // プリンター名を出力 9 System.Diagnostics.Debug.WriteLine(s); 10 // プリンター設定を出力 11 System.Diagnostics.Debug.WriteLine(pd.PrinterSettings.ToString()); 12}
試したこと
分からないなりに、該当のソースコードに記載したPrinterSettingsプロパティの中身を確認しましたが、物理的なプリンターと仮想的なプリンターを区別できるようなプロパティはありませんでした
補足情報(FW/ツールのバージョンなど)
今回のテスト環境は以下の通りです
- Visual Studio 2019
- C#
- .NET Framework 4.5
- Windows 10
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/12/09 08:07