private void MenuItem1Click(object sender, EventArgs e) { OpenFileDialog fileDialog = new OpenFileDialog(); fileDialog.InitialDirectory = DeviceHandler.GetSpoolDirectory(); fileDialog.Filter = "Spool Shadow File (*.shd)|*.shd|Todos os arquivos (*.*)|*.*"; // Exibe a caixa de seleção de arquivo e verifica o resultado da interação do usuário DialogResult openFileResult = fileDialog.ShowDialog(); if (openFileResult == DialogResult.Cancel) { return; } String shadowFilename = fileDialog.FileName; if (File.Exists(shadowFilename)) { SpooledJob spooledJob = new SpooledJob(shadowFilename, this); String jobName = spooledJob.ShadowFile.PrinterName + ", " + spooledJob.ShadowFile.JobId.ToString(); ManagedPrintJob managedJob = new ManagedPrintJob(jobName); String jobInfo = GetJobInfo(spooledJob, managedJob); jobInfoBox.Invoke(new PerformTextOutputDelegate(LogJobInfo), jobInfo); } }
/// <summary> /// Constroi uma instancia da classe SpoolMonitor. Inicia o monitoramento ( intercepta /// arquivos Shadow (*.SHD) criados/modificados/excluidos no diretório de spool ) /// </summary> public SpoolMonitor(IListener listener) { this.listener = listener; FileSystemWatcher fileWatcher = new FileSystemWatcher(DeviceHandler.GetSpoolDirectory(), "*.shd"); fileWatcher.IncludeSubdirectories = false; fileWatcher.NotifyFilter = NotifyFilters.LastWrite | NotifyFilters.FileName; fileWatcher.Created += new FileSystemEventHandler(SpoolFileCreated); fileWatcher.Changed += new FileSystemEventHandler(SpoolFileChanged); fileWatcher.Deleted += new FileSystemEventHandler(SpoolFileDeleted); fileWatcher.EnableRaisingEvents = true; }
private void button1_Click(object sender, EventArgs e) { OpenFileDialog openFileDialog = new OpenFileDialog(); openFileDialog.InitialDirectory = DeviceHandler.GetSpoolDirectory(); openFileDialog.Filter = "Spool Shadow File (*.shd)|*.shd|Todos os arquivos (*.*)|*.*"; DialogResult dialogResult = openFileDialog.ShowDialog(); if (dialogResult == DialogResult.Cancel) { return; } SpooledJob spooledJob = new SpooledJob(openFileDialog.FileName, this); Dictionary <String, Object> jobSummary = PrintJobContext.GetJobSummary(spooledJob); infoBox.Clear(); infoBox.Text += "Documento: " + jobSummary["documentName"] + Environment.NewLine; infoBox.Text += "Hora: " + jobSummary["submitted"] + Environment.NewLine; infoBox.Text += "UserName: "******"userName"] + Environment.NewLine; infoBox.Text += "PrinterName: " + jobSummary["printerName"] + Environment.NewLine; infoBox.Text += "Número de cópias: " + jobSummary["copyCount"] + Environment.NewLine; infoBox.Text += "Número de páginas: " + jobSummary["pageCount"] + Environment.NewLine; /**************************************************************************************/ /*********************** Extra job info ***********************/ /**************************************************************************************/ infoBox.Text += Environment.NewLine; infoBox.Text += "Driver Name: " + spooledJob.ShadowFile.DriverName + Environment.NewLine; infoBox.Text += "Notify Name: " + spooledJob.ShadowFile.NotifyName + Environment.NewLine; infoBox.Text += "Print Processor: " + spooledJob.ShadowFile.PrintProcessor + Environment.NewLine; infoBox.Text += "Port: " + spooledJob.ShadowFile.Port + Environment.NewLine; infoBox.Text += "JobId: " + spooledJob.ShadowFile.JobId.ToString() + Environment.NewLine; infoBox.Text += "Data type: " + jobSummary["dataType"] + Environment.NewLine; infoBox.Text += "Spool fileSize: " + jobSummary["spoolFileSize"] + "(" + GetPrivateFieldValue(spooledJob.ShadowFile, "spoolFileSize") + " bytes)" + Environment.NewLine; /**************************************************************************************/ /*********************** DevMode info ***********************/ /**************************************************************************************/ infoBox.Text += Environment.NewLine; infoBox.Text += "Device Name: " + spooledJob.ShadowFile.DevMode.DeviceName + Environment.NewLine; infoBox.Text += "Form Name: " + spooledJob.ShadowFile.DevMode.FormName + Environment.NewLine; infoBox.Text += Environment.NewLine; infoBox.Text += "Número de páginas = " + spooledJob.SpoolFile.Pages.Count.ToString() + Environment.NewLine; // Encerra o método caso não seja um EMF if (!spooledJob.ShadowFile.DataType.ToUpper().Contains("EMF")) { return; } imgPageView.Image = ((EMFPage)spooledJob.SpoolFile.Pages[0]).Thumbnail; int index = 0; foreach (EMFPage page in spooledJob.SpoolFile.Pages) { index++; EMFReader.Save(page.PageImage, @"C:\page" + index.ToString() + ".emf"); } }