Estoy tratando de atrapar todos los trabajos de impresión enviados a la impresora en nuestra red local. Quiero mostrar algunas propiedades del trabajo, como el nombre del trabajo, enviar hora, etc.Cómo atrapar trabajos de impresión en C# .NET
Probé un bucle while pero no capturó mi trabajo de impresión, tal vez porque ocurrió mientras el hilo estaba durmiendo. ¿Hay algún evento que pueda registrar y manejar? No quiero gastar todo el recurso de la CPU para esta tarea en bucle infinito.
yo probamos este:
public static void WritePrinterJobs()
{
while (true)
{
foreach (var job in LocalPrintServer.GetDefaultPrintQueue().GetPrintJobInfoCollection())
{
Console.WriteLine(job.Submitter + " " + job.TimeJobSubmitted.ToShortDateString());
}
Thread.Sleep(100);
}
}
EDIT: El código anterior funciona en realidad, no es necesario ir nivel inferior si funciona para ti, mi error fue no configura la impresora predeterminada correctamente .
http://stackoverflow.com/questions/6506916/events -in-printqueue – adt
Tenga en cuenta que si está utilizando un bucle foreach que se está ejecutando constantemente, si se producen muchos trabajos de impresión a la vez, el documento que se va a imprimir se puede imprimir antes de encontrar el código es –
Pero, ¿todavía tengo que volver a verificar las tareas de impresión con un temporizador? Creo que no hay ningún tipo de evento JobAdded que pueda enlazar, ¿verdad? –