Я перечисляю принтеры, подключенные к ПК. Я сделал это с использованием пространства имен C# System.Printing
. Хорошо работает. Но в основном это показывает программные принтеры, такие как Microsoft XPS Document writer, Microsoft Fax и т. Д. Я хотел бы знать, можно ли удалить эти ssoftware принтеры из перечисления. Код, который я сделал это будет показано ниже:Идентифицировать исходный принтер
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, и ... ну, боюсь, я не думаю, что есть способ надежно различать аппаратное обеспечение и виртуальный принтер во всех случаях. Я мог бы дать вам «обычно правильное» решение, но я не думаю, что «всегда правильное» решение возможно. Сожалею. :-( –