Sto cercando di rilevare tutti i processi di stampa inviati alla stampante nella nostra rete locale. Voglio mostrare alcune proprietà del lavoro come nome del lavoro, tempo di invio e così via.Come catturare i lavori di stampa in C# .NET
Ho provato un ciclo while ma non ha catturato il mio lavoro di stampa, forse perché è successo mentre il thread stava dormendo. C'è un evento che posso registrare e gestire? Non voglio passare tutta la risorsa della CPU per questa attività a ciclo infinito.
ho provato questo:
public static void WritePrinterJobs()
{
while (true)
{
foreach (var job in LocalPrintServer.GetDefaultPrintQueue().GetPrintJobInfoCollection())
{
Console.WriteLine(job.Submitter + " " + job.TimeJobSubmitted.ToShortDateString());
}
Thread.Sleep(100);
}
}
EDIT: Il codice precedente funziona in realtà, non c'è bisogno di andare piano inferiore se funziona per voi, il mio errore non era corretta configurazione della stampante predefinita .
http://stackoverflow.com/questions/6506916/events -in-printqueue – adt
Si noti che se si utilizza un ciclo foreach costantemente in esecuzione, se si verificano numerosi lavori di stampa contemporaneamente, il documento che verrà stampato potrebbe essere stampato prima che il codice venga trovato it –
Ma devo ancora ricontrollare i lavori di stampa usando un timer? Penso che non ci sia un tipo di evento JobAdded che posso collegare, giusto? –