I enumerating printerers connected in the PC. L'ho fatto usando lo spazio dei nomi C# System.Printing
. Funziona bene. Ma per lo più mostra stampanti software come Microsoft XPS Document writer, Microsoft Fax ecc. Mi piacerebbe sapere che è possibile rimuovere queste stampanti ssoftware dall'enumerazione. Il codice che ho fatto è sotto mostrano:Identifica la stampante originale
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;
}
}
La cosa molto divertente è che sto usando la stampante di rete :) – Zigma
Ho dato un sacco di pensiero negli ultimi giorni, e penso di conoscere il sottosistema di stampa di Windows così come nessuno al di fuori di Microsoft, e ... beh, temo di non pensare che ci sia un modo per distinguere in modo affidabile tra un hardware e una stampante virtuale in tutti i casi. Potrei darti una soluzione "di solito giusta", ma non credo sia possibile una soluzione "sempre giusta". Scusate. :-( –