Получите не печатные копии детали и общее количество страниц, напечатанных из Win32_PrintJob - PullRequest
0 голосов
/ 12 ноября 2018

Я использую следующий код для получения сведений о задании на печать всякий раз, когда документ запрашивается для печати.Его не вернуть print copy и total no. of pages printed.

Странная вещь, которую я обнаружил, что когда я выбираю «OneNote» в качестве принтера для печати документов, он возвращает total no. of pages printed правильно, т. Е. Общее количество страниц документа * печатная копия).

 // Query to get all the queued printer jobs.
                searchQuery = "SELECT * FROM Win32_PrintJob";
                // Create an object using the above query.
                searchPrintJobs = new ManagementObjectSearcher(searchQuery);
                // Fire the query to get the collection of the printer jobs.
                prntJobCollection = searchPrintJobs.Get();

                // Look for the job you want to delete/cancel.
                if (prntJobCollection.Count > 0)
                {
                    foreach (ManagementObject prntJob in prntJobCollection)
                    {
                        UInt32 TotalPages = (UInt32)prntJob.Properties["TotalPages"].Value;
                        JobId = (UInt32)prntJob.Properties["JobId"].Value;
                        UInt32 PagesPrinted = (UInt32)prntJob.Properties["PagesPrinted"].Value;
                        string Caption = (string)prntJob.Properties["Caption"].Value;
                        string Color = (string)prntJob.Properties["Color"].Value;
                        string DataType = (string)prntJob.Properties["DataType"].Value;
                        string Description = (string)prntJob.Properties["Description"].Value;
                        string Document = (string)prntJob.Properties["Document"].Value;
                        string DriverName = (string)prntJob.Properties["DriverName"].Value;
                        string ElapsedTime = (string)prntJob.Properties["ElapsedTime"].Value;
                        HostPrintQueue = (string)prntJob.Properties["HostPrintQueue"].Value;
                        string JobStatus = (string)prntJob.Properties["JobStatus"].Value;
                        string Name = (string)prntJob.Properties["Name"].Value;
                        string Notify = (string)prntJob.Properties["Notify"].Value;
                        Owner = (string)prntJob.Properties["Owner"].Value;
                        UInt32 PaperLength = (UInt32)prntJob.Properties["PaperLength"].Value;
                        string PaperSize = (string)prntJob.Properties["PaperSize"].Value;
                        UInt32 PaperWidth = (UInt32)prntJob.Properties["PaperWidth"].Value;
                        string PrintProcessor = (string)prntJob.Properties["PrintProcessor"].Value;
                        UInt32 Priority = (UInt32)prntJob.Properties["Priority"].Value;
                        UInt32 Size = (UInt32)prntJob.Properties["Size"].Value;
                        string Status = (string)prntJob.Properties["Status"].Value;
                        UInt32 StatusMask = (UInt32)prntJob.Properties["StatusMask"].Value;
                        string TimeSubmitted = (string)prntJob.Properties["TimeSubmitted"].Value;}}

Ятакже пытается извлечь эти детали из структуры JOB_INFO_2, но не может реализовать это, как объяснено .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...