Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Перехват обращения к принтеру

Ответить
Настройки темы
Перехват обращения к принтеру

Новый участник


Сообщения: 5
Благодарности: 0

Профиль | Отправить PM | Цитировать


В моей утилите мне необходимо отследить обращение программ к принтеру (следует подсчитать кол-во распечатанных страниц). Решение этой задачи в Linux/Unix очевидно. Для Windows я не созрел. Пытался отследить это событие с помощью WinSight - не получилось.

Может быть кто-нибудь подскажет решение в Windows?

Вопроса собственно два.

1. Что это за событие?
2. Как мне его "потрогать" в моей утилите? Думаю, что можно было бы непрерывно читать события глобальной очереди через PeekMessage(). Но может быть есть более красивое решение - типа перехвата системного вызова (как в Linux/Unix).

Заранее благодарен.

Отправлено: 21:39, 24-03-2006

 

Аватара для DillerInc

Обратный инженер


Сообщения: 644
Благодарности: 47

Профиль | Отправить PM | Цитировать


knzsoft
1. Я думаю,это будет сообщение типа WM_PRINT .
2. Не уверен,но возможно получится установить хук на это сообщение и далее попробовать получить информацию "что да как" ...

-------
То,что неясно,следует выяснить.То,что трудно творить,следует делать с великой настойчивостью. © Конфуций


Отправлено: 14:54, 25-03-2006 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 5
Благодарности: 0

Профиль | Отправить PM | Цитировать


Спасибо за отклик. Попытался разобраться. Думаю, что это скорее WM_PAINT на контексте принтера, но только какой из кучи?
Установка hook производится на уровне драйвера или в пользовательском постранстве? Читаю MSDN но пока не найду ответа.

Отправлено: 17:37, 25-03-2006 | #3


Аватара для DillerInc

Обратный инженер


Сообщения: 644
Благодарности: 47

Профиль | Отправить PM | Цитировать


Цитата:
Думаю, что это скорее WM_PAINT
...почему?
WM_PAINT - это,как я понял,в большинстве случаев простой перерисовки окна,а WM_PRINT в основном используется в контексте принтера.
К тому же при перехвате WM_PAINT мы получаем только описатель окна,а в случае с WM_PRINT мы получим дескриптор контекста и какие-то флаги.Правда,я немного не догоняю,как потом по полученному дескриптору контекста вычислить принтер,его использующий??

Хук ставится на пользовательском уровне.С помощью функции SetWindowsHookEx .Но там тоже есть некоторые непонятки в данном случае.

-------
То,что неясно,следует выяснить.То,что трудно творить,следует делать с великой настойчивостью. © Конфуций


Отправлено: 21:31, 25-03-2006 | #4


Новый участник


Сообщения: 5
Благодарности: 0

Профиль | Отправить PM | Цитировать


Я не вижу события WM_PRINT при печати из MS WORD в WinSight . Зато в избытке вижу WM_PAINT и WM_NCPAINT. Часть их легко расшифровываются и относятся к перерисовкам на экране. А вот некоторые из них могут оказаться событием рисования на hDC принтера.

В ОС Linux ситуация для меня много проще потому, что я хорошо знаю модель взаимодействия приложения с драйвером. В Windows, я, к сожалению, этого не знаю. Может быть не событие искать надо, а, как в случае с Linux/Unix, системный вызов к драйверу печати? Существуют ли такие понятия в Windows?

За SetWindowHookEx отдельное спасибо. Я начинаю понимать, что можно сделать с событиями в Windows .

Отправлено: 23:13, 25-03-2006 | #5



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Перехват обращения к принтеру

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Время последнего обращения к файлу truvo Хочу все знать 1 23-11-2009 13:36
Перехват сообщений Bodler Microsoft Windows 2000/XP 21 08-03-2007 01:46
лишние обращения в Internet SmiAl240 Защита компьютерных систем 1 29-12-2005 12:35
Win 98 обращения к диску А: hulga Microsoft Windows 95/98/Me (архив) 2 06-10-2004 09:05
обращения winXP Guest Хочу все знать 1 13-09-2003 00:49




 
Переход