powered by simpleCommunicator - 2.0.54     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Контроль печати
2 сообщений из 2, страница 1 из 1
Контроль печати
    #38908793
.AleXo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет. Хочу посчитать сколько каждый пользователь печатает листов. Что-то не могу добиться желаемого результата :)

делаю так:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
        ManagementEventWatcher Watcher;
        ManagementScope Scopee;

        public Form1()
        {
            InitializeComponent();
            try
            {
                string ComputerName = "localhost";
                string WmiQuery;
                
                Scopee = new ManagementScope(String.Format("\\\\{0}\\root\\CIMV2", ComputerName), null);
                Scopee.Connect();
                
                WmiQuery = "Select * From __InstanceDeletionEvent within 1 Where TargetInstance ISA 'Win32_PrintJob'";
                ManagementEventWatcher Watcher = new ManagementEventWatcher(Scopee, new EventQuery(WmiQuery));
                Watcher.EventArrived += new EventArrivedEventHandler(this.WmiEventHandler);
                
                Watcher.Start();

            }
            catch (Exception ex)
            {
                listBox1.Items.Add(String.Format("Exception {0} Trace {1}", ex.Message, ex.StackTrace));
            }
        }

        private void WmiEventHandler(object sender, EventArrivedEventArgs e)
        {
            int JobId = 0;
            ManagementBaseObject curJob = (ManagementBaseObject)e.NewEvent.Properties["TargetInstance"].Value;
            if (curJob != null) JobId = Convert.ToInt32(curJob["JobId"]);
           
            addToList("TargetInstance.JobId : " + curJob["JobId"] + " isCopmleted");
            addToList("TargetInstance.Caption : " + curJob["Caption"]);
            addToList("TargetInstance.JobStatus : " + curJob["JobStatus"]);
            addToList("TargetInstance.PagesPrinted : " + curJob["PagesPrinted"]);
            addToList("TargetInstance.TotalPages : " + curJob["TotalPages"]);
            addToList("TargetInstance.Status : " + curJob["Status"]);
            addToList("TargetInstance.StatusMask : " + curJob["StatusMask"]);
           
        }



но дело в том, что PagesPrinted не дает число фактически напечатанных страниц.
например, я печатаю 4 листа, значение PagesPrinted = 3 и значение TotalPages=1.
Если, скажем, большое задание будет отменено, то я не смогу получить число напечатанных страниц.

Какие еще есть варианты мониторинга очереди печати?
...
Рейтинг: 0 / 0
Контроль печати
    #38910706
.AleXo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ладно. Черт с этими страницами. Как можно получить PrintTicket текущего задания.
Если я пишу так:
Код: c#
1.
PrintTicket pt = job.HostingPrintQueue.CurrentJobSettings.CurrentPrintTicket;


То pt равно тоже самое что и Queue.DefaultPrintTicket
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Контроль печати
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]