Ho un'applicazione in cui ho bisogno di stampare un biglietto. Ogni biglietto deve essere unico. L'applicazione è form di Windows e scritta interamente in C#. Per la nostra applicazione utilizziamo stampanti laser monocromatiche Samsung ML-2525.C'è un modo per verificare se un processo di stampa è andato a buon fine?
Il flusso è sostanzialmente il seguente, l'operatore preleva un prodotto/biglietto (che è unico) e poi si preme un pulsante che fa 2 cose:
- connette a un database e aggiorna il prodotto ed usati
- di stampare il biglietto (questo viene fatto utilizzando System.Drawing e GDI +)
per qualche motivo, ogni tanto un po ', l'immagine che deve essere stampata non viene inviato alla stampante. È un caso raro, ma succede.
Ho provato a collegarmi alla stampante utilizzando Win32_Printer (http://msdn.microsoft.com/en-us/library/Aa394363) ma non riesco a ottenere lo stato corrente della stampante (online, offline, toner basso, inceppamento carta, ecc.). Posso solo verificare se la stampante esiste e che il formato della carta è installato correttamente. Ho provato codice simile di seguito, ma non ha funzionato
private string MonitorPrintJobWmi()
{
var jobMessage = String.Empty;
var scope = new ManagementScope(ManagementPath.DefaultPath);
scope.Connect();
var selectQuery = new SelectQuery { QueryString = @"select * from Win32_PrintJob" };
var objSearcher = new ManagementObjectSearcher(scope, selectQuery);
var objCollection = objSearcher.Get();
foreach (var job in objCollection)
{
if (job != null)
{
jobMessage += String.Format("{0} \r\n", job["Name"].ToString());
jobMessage += String.Format("{0} \r\n", job["JobId"].ToString());
_jobId = Convert.ToInt32(job["JobId"]);
jobMessage += String.Format("{0} \r\n", job["JobStatus"].ToString());
jobMessage += String.Format("{0} \r\n", job["Status"].ToString());
}
}
return jobMessage;
}
Ho cercato di ottenere un'API per la stampante, ma non ho potuto ottenere una sospensione di esso. A proposito, il software della stampante indica diversi errori nella barra degli strumenti di Windows.
La mia domanda è se qualcuno mi può guidare nella giusta direzione su come connettersi a una stampante e controllare se la stampa ha avuto successo.
Inoltre, sarebbe utile se qualcuno fosse a conoscenza di qualche altra stampante specifica in cui potrei realizzare ciò, ad es. Cambiare l'hardware.
Grazie,
Vedere correlato: http://stackoverflow.com/questions/1921487/confirm-successful-print-programmatically-in-windows – Eugene
Ho fatto, ma alcuni codice di esempio per ottenere un vantaggio iniziale sarebbe utile. – lopezbertoni
@lopezbertoni Un piccolo googling ti mostrerà come usare quei metodi collegati in app C# ... come http://www.codeproject.com/Articles/51085/Monitor-jobs-in-a-printer-queue-NET –