В настоящее время я улавливаю событие, когда пользователь печатает, но есть вся информация, но TotalPages не точен. В документе будет 28 страниц, но будет показано только 10, поскольку задание на печать все еще находится в процессе.
Я пытался зацикливаться в цикле while, но он всегда возвращал один и тот же результат. Попытка получить "Select * from Win32_PrintJob, где JobId = N"
private void StartWatcher()
{
try
{
txtBox.Text += "\r\nMonitoring for printer activity...";
string wqlQuery = @"Select * From __InstanceCreationEvent Within 1
Where TargetInstance ISA 'Win32_PrintJob'";
Classes.Printer.clsPrinter clsPrinter = new Classes.Printer.clsPrinter();
WqlEventQuery query = new WqlEventQuery(wqlQuery);
ManagementEventWatcher watcher = new ManagementEventWatcher(query);
watcher.EventArrived += new EventArrivedEventHandler(printJobArrived_EventArrived);
watcher.Start();
}
catch (Exception ex)
{
log.Error("Form1 StartWatcher: " + ex.Message.ToString());
MessageBox.Show(ex.ToString());
}
}
void printJobArrived_EventArrived(object sender, EventArrivedEventArgs e)
{
try
{
string note = "";
ManagementBaseObject printJob = (ManagementBaseObject)e.NewEvent.Properties["TargetInstance"].Value;
note = "";
note = "\r\n\r\nDescription :" + printJob.GetPropertyValue("Description").ToString();
note += "\r\nTotal Pages:" + printJob.GetPropertyValue("TotalPages").ToString();
//GetDetails(Convert.ToInt32(printJob.GetPropertyValue("JobId")));
Upload(printJob.GetPropertyValue("TotalPages").ToString(), printJob.GetPropertyValue("Description").ToString());
//foreach (PropertyData prop in printJob.Properties)
//{
// string val = prop.Value == null ? "null" : prop.Value.ToString();
// note += "\r\n" + "\r\n" + prop.Name + ": " + val;
//}
txtBox.Invoke((Action)delegate
{
txtBox.Text += note;
});
}
catch (Exception ex)
{
log.Error("Form1 printJobArrived_EventArrived: " + ex.Message.ToString());
MessageBox.Show(ex.ToString());
}
}
Ожидаемый результат заключается в том, что он должен возвращать точное количество Totalpages, но возвращает неточные значения. Протестировано с печатью в pdf