Exemplo n.º 1
0
        /// <summary>
        /// Invoca e executa um método em um serviço de impressão.
        /// </summary>
        /// <param name="method">Nome do método</param>
        /// <param name="printJob">Serviço de impressão</param>
        private static bool InvokePrintMethod(string method, PrintJob printJob)
        {
            foreach (ManagementObject prntJob in GetRawPrintJobsCollection())
            {
                var jobName   = prntJob.Properties["Name"].Value.ToString();
                int prntJobID = Convert.ToInt32(jobName.Split(splitArr)[1]);

                if (String.Compare(GetPrinterName(prntJob), printJob.PrinterName, true) == 0 && prntJobID == printJob.JobID)
                {
                    prntJob.InvokeMethod(method, null);
                    return(true);
                }
            }

            return(false);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Cancela um serviço de impressão.
        /// </summary>
        /// <param name="printJob">Serviço de impressão</param>
        public static bool CancelPrintJob(this PrintJob printJob)
        {
            foreach (ManagementObject prntJob in GetRawPrintJobsCollection())
            {
                var jobName   = prntJob.Properties["Name"].Value.ToString();
                int prntJobID = Convert.ToInt32(jobName.Split(splitArr)[1]);

                if (String.Compare(GetPrinterName(prntJob), printJob.PrinterName, true) == 0 && prntJobID == printJob.JobID)
                {
                    prntJob.Delete();
                    return(true);
                }
            }

            return(false);
        }
Exemplo n.º 3
0
        /// <summary>
        /// Realiza o callback de ação no serviço de impressão.
        /// </summary>
        /// <param name="printJob">Serviço de impressão</param>
        /// <param name="onJobFound">Ação a ser executada ao encontrar um novo serviço, com o parâmetro PrintJob</param>
        private static void ListenCallback(PrintJob printJob, Action <PrintJob> onJobFound)
        {
            lock (_Callbacks)
            {
                if (_Callbacks.Any(c => c.JobID == printJob.JobID && c.PrinterName == printJob.PrinterName && c.DocumentName == printJob.DocumentName))
                {
                    return;
                }

                _Callbacks.Add(printJob);
            }

            onJobFound(printJob);

            if (_Callbacks.Count > MAX_CALLBACK_MEMORY)
            {
                ClearCallbackMemory();
            }
        }
Exemplo n.º 4
0
 /// <summary>
 /// Resume um serviço de impressão.
 /// </summary>
 /// <param name="printJob">Serviço de impressão</param>
 public static bool ResumePrintJob(this PrintJob printJob)
 {
     return(InvokePrintMethod("Resume", printJob));
 }
Exemplo n.º 5
0
 /// <summary>
 /// Pausa um serviço de impressão.
 /// </summary>
 /// <param name="printJob">Serviço de impressão</param>
 public static bool PausePrintJob(this PrintJob printJob)
 {
     return(InvokePrintMethod("Pause", printJob));
 }