Доброго времени суток! Есть задача ведения лога всего что распечатывается с компутера (лучше конечно с сохраненением копий) я так понимаю здесь потребуется перехватывать процесс spoolsv.exe (диспетчер очереди печати) Только вот с какой стороны подойти к нему пока не могу решить ) спецификации или пример подобного к сожалению гугл не подкинул. может кто подскажет по теме с чего начать?
В свое время решил проблему перехватом функций ScheduleJob и StartDocPrinter экспортируемых winspool.drv для каждого процесса в который он проецируется. Способ не дзенский но внятного интерфейса для хука печати я так и не нашел.
Последовательность действий такая: OpenPrinter FindFirstPrinterChangeNotification WaitForSingleObject .if eax == 0 FindNextPrinterChangeNotification .if eax != 0 EnumJobs .if eax == ERROR_INSUFFICIENT_BUFFER Здесь читаешь данные из структуры JOB_INFO_2 .endif .endif .endif FindClosePrinterChangeNotification CloseHandle ClosePrinter А дальше MSDN тебе в руки.
Marik Можно перехватывать CreateDCW и TextOutW. Если 2-ой параметр (device name) CreateDCW указывает на "winspool", то запоминаем возвращаемый этой функцией хэдл DC. Затем, как только он встречается в TextOutW, то 4-ый параметр будет указывать на распечатываемый текст, 5-ый - на его длину. Тестировал только на notepad.exe. Посмотрите в MSDN'e код "Printing a Document".