/// <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); }
/// <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); }
/// <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(); } }
/// <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)); }
/// <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)); }