internal static PrinterState CheckPrinterQueue(string printerName) { //List<PrintJobStatus> prints = new List<PrintJobStatus>(); if (ConfigurationManager.AppSettings["Mode"] == "Diagnostic") { logger.Log(NLog.LogLevel.Info, "Inside CheckPrinterQueue function"); } PrinterState pstate = new PrinterState(); var printServer = new PrintServer(); var myPrintQueues = printServer.GetPrintQueues(new[] { EnumeratedPrintQueueTypes.Local, EnumeratedPrintQueueTypes.Connections }); foreach (PrintQueue pq in myPrintQueues) { pq.Refresh(); if (!pq.Name.ToLower().Contains(printerName.ToLower())) { continue; } PrintJobInfoCollection jobs = pq.GetPrintJobInfoCollection(); foreach (PrintSystemJobInfo job in jobs) { if (job.JobStatus == PrintJobStatus.PaperOut || job.JobStatus == PrintJobStatus.UserIntervention || job.JobStatus == PrintJobStatus.Offline || job.JobStatus == PrintJobStatus.Error || job.JobStatus == PrintJobStatus.Blocked) { pstate.alert = true; pstate.status = job.JobStatus; } else { pstate.alert = false; pstate.status = job.JobStatus; } //var aux = job; //Check job status here //job.JobStatus } // end for each print job } // end for each print queue return(pstate); }
internal static void AbortPrinting() { if (ConfigurationManager.AppSettings["Mode"] == "Diagnostic") { logger.Log(NLog.LogLevel.Info, "Inside Abort printing function"); } //List<PrintJobStatus> prints = new List<PrintJobStatus>(); PrinterState pstate = new PrinterState(); var printServer = new PrintServer(); var myPrintQueues = printServer.GetPrintQueues(new[] { EnumeratedPrintQueueTypes.Local, EnumeratedPrintQueueTypes.Connections }); foreach (PrintQueue pq in myPrintQueues) { pq.Refresh(); //if (!pq.Name.ToLower().Contains(printerName.ToLower())) continue; PrintJobInfoCollection jobs = pq.GetPrintJobInfoCollection(); foreach (PrintSystemJobInfo job in jobs) { job.Cancel(); } // end for each print job } // end for each print queue }