|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Перехват обращения к принтеру |
|
Перехват обращения к принтеру
|
Новый участник Сообщения: 5 |
Профиль | Отправить PM | Цитировать В моей утилите мне необходимо отследить обращение программ к принтеру (следует подсчитать кол-во распечатанных страниц). Решение этой задачи в Linux/Unix очевидно. Для Windows я не созрел. Пытался отследить это событие с помощью WinSight - не получилось.
Может быть кто-нибудь подскажет решение в Windows? Вопроса собственно два. 1. Что это за событие? 2. Как мне его "потрогать" в моей утилите? Думаю, что можно было бы непрерывно читать события глобальной очереди через PeekMessage(). Но может быть есть более красивое решение - типа перехвата системного вызова (как в Linux/Unix). Заранее благодарен. |
|
Отправлено: 21:39, 24-03-2006 |
Обратный инженер Сообщения: 644
|
Профиль | Отправить PM | Цитировать knzsoft
1. Я думаю,это будет сообщение типа WM_PRINT . 2. Не уверен,но возможно получится установить хук на это сообщение и далее попробовать получить информацию "что да как" ... |
------- Отправлено: 14:54, 25-03-2006 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 5
|
Профиль | Отправить PM | Цитировать Спасибо за отклик. Попытался разобраться. Думаю, что это скорее WM_PAINT на контексте принтера, но только какой из кучи?
Установка hook производится на уровне драйвера или в пользовательском постранстве? Читаю MSDN но пока не найду ответа. |
Отправлено: 17:37, 25-03-2006 | #3 |
Обратный инженер Сообщения: 644
|
Профиль | Отправить PM | Цитировать Цитата:
WM_PAINT - это,как я понял,в большинстве случаев простой перерисовки окна,а WM_PRINT в основном используется в контексте принтера. К тому же при перехвате WM_PAINT мы получаем только описатель окна,а в случае с WM_PRINT мы получим дескриптор контекста и какие-то флаги.Правда,я немного не догоняю,как потом по полученному дескриптору контекста вычислить принтер,его использующий?? Хук ставится на пользовательском уровне.С помощью функции SetWindowsHookEx .Но там тоже есть некоторые непонятки в данном случае. |
|
------- Отправлено: 21:31, 25-03-2006 | #4 |
Новый участник Сообщения: 5
|
Профиль | Отправить PM | Цитировать Я не вижу события WM_PRINT при печати из MS WORD в WinSight . Зато в избытке вижу WM_PAINT и WM_NCPAINT. Часть их легко расшифровываются и относятся к перерисовкам на экране. А вот некоторые из них могут оказаться событием рисования на hDC принтера.
В ОС Linux ситуация для меня много проще потому, что я хорошо знаю модель взаимодействия приложения с драйвером. В Windows, я, к сожалению, этого не знаю. Может быть не событие искать надо, а, как в случае с Linux/Unix, системный вызов к драйверу печати? Существуют ли такие понятия в Windows? За SetWindowHookEx отдельное спасибо. Я начинаю понимать, что можно сделать с событиями в Windows . |
|
Отправлено: 23:13, 25-03-2006 | #5 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
[решено] Время последнего обращения к файлу | 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 |
|