Наблюдение за очередью печати

Тема в разделе "WASM.WIN32", создана пользователем PavPS, 4 дек 2010.

  1. PavPS

    PavPS New Member

    Публикаций:
    0
    Регистрация:
    24 фев 2004
    Сообщения:
    109
    Адрес:
    Russia
    Здравствуйте.
    Столкнулся с задачей мониторинга печати по организации. В мониторинг входят: кол-во страниц, цветность,имя документа,имя пользователя,принтер.

    Пробывал различные подходы, но не один не устроил.
    1. PrintNotifications - вешь хорошая, отлично работает для локальных принтеров - можно получить сколько было напречатано привязываясь к событию SetJob. Увы, но для сетевых принтеров это нормально не роботает. Одним словом, события о печати в этом случае не накапливаются в очереди и все зависит от того, насколько вы быстро возвращаетесь к ожиданию на WaitForSingleObject(hPrinterNotification) - т.е., если вы печатаете документ из 20 страниц на сетевой принтер, вы можете получить любое число от 0 до 20, т.к. когда вы, скажем получаете событие, вы видите там 8 страниц, записываете это, возвращаетесь к ожиданию, а событие больше не вызовется, т.к. 20-я страница напечаталась пока вы регистрировали 8 страниц. Так что этот путь не надежен. Варианты работать быстрее и прочее - не подходят.

    2. Перехват методов в спулере печате spoolsv.exe
    http://forum.madshi.net/viewtopic.php?f=7&t=5082&start=15 http://forum.madshi.net/viewtopic.php?t=4046
    Тут на дельфях описано как это делается и есть полная информация. Но во тело в том, что хочется перехватывать только ф-ии в spoolsv процессе, а не в других.
    Если посмотреть внимательно на http://msdn.microsoft.com/en-us/library/ff551775(VS.85).aspx, то видно, что все идет в spoolss.dll , и да, это работает для печати из накоторых программ, действительно, можно перехватить SetJobW, но вот при печати через Adobe Acrobat никакие хуки не вызываются. Допустим, что я предпологаю, что Acrobat печатает на более низком уровне, но в итоге в очереди печати я же вижу кол-во страниц, откуда-то же оно берется... Одним словом, не знаю с какой стороны к этому подойти.

    3. Драйвер. Это конечно интересно, мощьно, но хочется всеже в UserMode все попробывать сначала.

    PS: Я полагаю задача эта решенная в узких кругах, т.к. некоторые поставщики принтеров снабжают клиентов таким софтом.
     
  2. JCronuz

    JCronuz New Member

    Публикаций:
    0
    Регистрация:
    26 сен 2007
    Сообщения:
    1.240
    Адрес:
    Russia
    Ахахах "мощьно"
     
  3. irrona

    irrona Member

    Публикаций:
    0
    Регистрация:
    26 май 2004
    Сообщения:
    178
    Адрес:
    Тирасполь
    PavPS

    С первым вариантом и я сталкивался. Перехват происходил неравномерно. Нормального решения так и не нашел. Может гуру что подскажут?