Сейчас на форуме: Rio, tyns777, zombi-vadim (+7 невидимых)

 eXeL@B —› Программирование —› хук печати на принтер
Посл.ответ Сообщение


Ранг: 71.9 (постоянный), 4thx
Активность: 0.040
Статус: Участник

Создано: 20 ноября 2014 14:01
· Личное сообщение · #1

Как перехватить изображения печатаемых страниц? Пока они еще распечатаны.
Насколько я понимаю, изображение печатаемой страницы преобразуется в EMF файл и затем он передается драйверу принтера, чтобы драйвер преобразовал изображение в низкоуровневые команды принтера.
Наверное можно получить доступ к этому EMF до его передачи в драйвер?



Ранг: 397.0 (мудрец), 179thx
Активность: 0.170.1
Статус: Участник

Создано: 20 ноября 2014 14:05
· Личное сообщение · #2

может я и не прав, но вроде в спулере печати можно найти

-----
...или ты работаешь хорошо, или ты работаешь много...





Ранг: 71.9 (постоянный), 4thx
Активность: 0.040
Статус: Участник

Создано: 20 ноября 2014 15:03
· Личное сообщение · #3

BfoX пишет:
может я и не прав, но вроде в спулере печати можно найти


Получения изображения документа там нет




Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 20 ноября 2014 16:12
· Личное сообщение · #4

вот тут есть немного инфы:

http://forum.vingrad.ru/topic-43671.html а дальше поиск по FindNextPrinterChangeNotification

судя по гуглу, у кого-то получалось даже

-----
[nice coder and reverser]





Ранг: 71.9 (постоянный), 4thx
Активность: 0.040
Статус: Участник

Создано: 20 ноября 2014 16:27
· Личное сообщение · #5

Hellspawn пишет:
FindNextPrinterChangeNotification


Уведомления о количестве страниц, начало/конец печати и прочие сообщения.
Но изображение документа посылаемого на принтер вытянуть нельзя.
Я пока кроме хука на DrvSendPage и выдирание растра из структуры SURFOBJ ничего не придумал.
Должны же быть какие-то простые пути, ведь есть много программ которые ловят документы посылаемые на печать.




Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 20 ноября 2014 16:40
· Личное сообщение · #6

jangle гуглите дальше, из сервиса народ говорит можно.

отреверсите эти программы, которые перехватывают, не понимаю в чем сложность.

-----
[nice coder and reverser]





Ранг: 337.6 (мудрец), 224thx
Активность: 0.210.1
Статус: Участник
born to be evil

Создано: 20 ноября 2014 16:56
· Личное сообщение · #7

изначально - зачем это нужно (на каком уровне хватать - свои доки(???), чужие на своем-коллективном, через траф локалки ваще на коллективный, ...) ?

-----
От многой мудрости много скорби, и умножающий знание умножает печаль





Ранг: 71.9 (постоянный), 4thx
Активность: 0.040
Статус: Участник

Создано: 20 ноября 2014 17:10
· Личное сообщение · #8

ajax пишет:
изначально - зачем это нужно


Исправление драйвера принтера. Когда печатаешь на нем маленький штрихкод, драйвер преобразует его в растр и кодирует его как картинку своим встроенным языком, потом посылает на принтер. Картинка выходит некачественной, мутной. Поэтому надо перехватить изображение, zxing-ом распознать штрихкод, и самостоятельно сформировать страницу на языке разметки принтера, выкинув картинку конечно, вставив вместо нее команды разметки штрихкода. А потом записать страницу в порт принтера. Картинка получается идеальной. Все это я могу сделать, я не понимаю как получить изображение документа посланного на печать.




Ранг: 337.6 (мудрец), 224thx
Активность: 0.210.1
Статус: Участник
born to be evil

Создано: 20 ноября 2014 17:46
· Личное сообщение · #9

мож чего не понимаю, но похоже на изобретение велосипеда. неужели никто не печатает штрихи? да уйма народу "от и до", не помню уже все iso наименования, давно было. в профильных форумах тишина?

-----
От многой мудрости много скорби, и умножающий знание умножает печаль





Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 20 ноября 2014 18:02
· Личное сообщение · #10

пишете свой драйвер принтера виртуального
и его устанавливаете как дефолтовый
в него все выводится будет при печати
вы его перехватываете переделываете и отправляете в другой драйвер принтера, либо сразу в физический порт принтера



Ранг: 419.0 (мудрец), 647thx
Активность: 0.460.51
Статус: Участник
"Тибериумный реверсинг"

Создано: 20 ноября 2014 18:12
· Личное сообщение · #11

Тащемта, я могу попробовать полностью закрыть вопрос тс Есть такая программа Print Audit, которая собственно и занимается тем, что ставит хуки при печати. Я с ней пересекся по поводу взлома лицензирования, но по своей сути, это то, что нужно. Ее просто так не достанешь в нете (в принципе ее и нигде нет), но я могу слить в личку весь клиент (сервер у админа, который контролирует печать...но он Вам, в принципе, не нужен). В клиенте pa6hook.dll хукается на ring3, pa664Inj.sys на ring0 соответственно.
В приложении только pa6hook.dll

3589_20.11.2014_EXELAB.rU.tgz - pa6hook.dll.zip


 eXeL@B —› Программирование —› хук печати на принтер
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати