PCに接続されているプリンタを列挙しています。私はC#System.Printing
名前空間を使ってやった。 これはうまくいきます。しかし、ほとんどの場合、Microsoft XPSドキュメントライター、Microsoft Faxなどのソフトウェアプリンタが表示されます。これらのソフトウェアプリンタを列挙から削除することは可能ですか?私が行っているコードは以下を示している:元のプリンタを特定する
PrintQueue printQueue = null;
LocalPrintServer localPrintServer = new LocalPrintServer();
// Retrieving collection of local printer on user machine
PrintQueueCollection localPrinterCollection =
localPrintServer.GetPrintQueues(new[] { EnumeratedPrintQueueTypes.Local,
EnumeratedPrintQueueTypes.Connections });
System.Collections.IEnumerator localPrinterEnumerator =
localPrinterCollection.GetEnumerator();
while (localPrinterEnumerator.MoveNext())
{
// Get PrintQueue from first available printer
printQueue = (PrintQueue)localPrinterEnumerator.Current;
if (!printQueue.IsOffline)
{
MessageBox.Show(printQueue.FullName.ToString());
string s = "Printer found " + printQueue.FullName.ToString();
listBox1.Items.Add(s);
}
else
{
// No printer exist, return null PrintTicket
// return null;
}
}
私はネットワークプリンタを使用しています: – Zigma
私はこれを数日間考えましたが、私はWindows印刷サブシステムと同様にMicrosoftの外にいる人、そして...まあ、すべてのケースでハードウェアと仮想プリンタを確実に区別する方法はないと思います。私はあなたに「普通は正しい」解決策を与えることができますが、「常に正しい」解決策は考えられません。ごめんなさい。 :-( –