|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
17.01.2009, 17:44 | #1 |
Регистрация: 17.01.2009
Сообщений: 6
|
Как перехватить документ, посланный на печать?
День добрый! Как перехватить документ, посланный на печать? То есть моя прога должна висеть в памяти и ждать. Когда кто-нибудь отправит на печать документ, она его перехватит, обработает, и снова пошлёт на печать.
Как я себе это представляю, когда документ посылают на печать, посылается какое-то сообщение вроде wm_ПослалиДокументНаПечать, потом документ копируется куда-то, его оттуда уже берёт драйвер и печатает. Вопрос в том, действительно ли это так, если да, то какого типа надо ставить хук, какие сообщения ловить, и где найти отправленый на печать файл. |
18.01.2009, 16:42 | #2 |
добрый няша
Старожил
Регистрация: 29.10.2006
Сообщений: 4,804
|
|
18.01.2009, 22:20 | #3 |
Регистрация: 17.01.2009
Сообщений: 6
|
Это не то! Эта функция лишь сообщает о изменении очереди печати. Но как получить путь к файлу, посланному на печать или его копию? Как не дать этому файлу встать на печать? Ибо мне надо напечатать УЖЕ ИЗМЕНЕННЫЙ файл, оригинальный напечататься не должен!
|
19.01.2009, 18:42 | #4 |
Форумчанин
Регистрация: 05.12.2007
Сообщений: 236
|
Пиши драйвер-фильтр для ЛПТ порта. Если нужен перехват только фалов от определенной проги, то можно просто перехватить АПИ.
|
19.01.2009, 18:47 | #5 | |
добрый няша
Старожил
Регистрация: 29.10.2006
Сообщений: 4,804
|
Цитата:
EnumJobs, SetJob, AddJob, GetJob и так далее отловили изменение и подредактирование соответствующее задание для печати Последний раз редактировалось rpy3uH; 19.01.2009 в 18:50. |
|
20.01.2009, 13:18 | #6 |
Регистрация: 17.01.2009
Сообщений: 6
|
с помощью EnumJobs можно получить лишь имя файла, но не путь к нему!
|
20.01.2009, 13:26 | #7 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Была такая же проблема выкрутился на 80%
1. Читай что Грузин написал 2. Поскольку печать на принтер у меня была всегда только из открытого Word то при получении в очереди печати нового документа, нахожу прогу которая сейчас активна, потом нахожу какие файлы у нее сейчас открыты (кодом Александра Багеля) В принципе полные пути получал.
I'm learning to live...
|
20.01.2009, 14:31 | #8 |
добрый няша
Старожил
Регистрация: 29.10.2006
Сообщений: 4,804
|
если надо перехватывать только от одной проги, то можно сделать как сказал Д'ьякон перехватывать функции. Перехватить можно функцию AddJob и во время добавления подменить данные.
|
25.01.2009, 20:55 | #9 |
Регистрация: 17.01.2009
Сообщений: 6
|
Я сделал перехват через отлов создания файла спулером. Теперь другая проблема- как отменить задание в очереди печати? Есть ли функция вроде DeleteJob? И если не сложно, пример работы с такой функцией.
|
25.01.2009, 21:33 | #10 |
добрый няша
Старожил
Регистрация: 29.10.2006
Сообщений: 4,804
|
функция SetJob последний параметр JOB_CONTROL_CANCEL
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как перехватить нажатие клавиш в Windows? | JoanM | Win Api | 15 | 31.05.2013 14:42 |
Как перехватить нажатие клавиши Windows? | UnD)eaD)Snake | Win Api | 3 | 16.03.2009 18:21 |
Как перехватить обращения к принтеру? | Classic | Win Api | 2 | 16.08.2007 11:07 |
Как перехватить программно смену пользователя | ale_krolik | Win Api | 1 | 15.12.2006 20:15 |
как перехватить открытие чужого приложенияпытаюсь перехватить открытие любого приложе | rpy3uH | Win Api | 2 | 02.12.2006 12:12 |