示例#1
0
        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);
        }
示例#2
0
        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
        }