zubr
Гость
|
|
« Ответ #3 : 02-12-2011 22:20 » |
|
Если интересуют только текстовые данные, то достаточно кроме вышеуказанных функций, через которые получаешь контекст принтера, перехватывать GDI-функции вывода текста: DrawText, DrawTextEx, TextOut, TabbedTextOut и т. д. Причем надо перехватывать как Ansi так и Unicod-ный варианты функций. Также надо учитывать, что вместо символьного буфера, могут быть глифы, тогда их надо конвертировать в символы. Если надо все что идет на печать перехватывать, то придется перехватывать и все возможные GDI-функции рисования. Также надо учитывать трансформации контекста, то есть перехватывать и функции типа SetWordTransform. Еще помнится регионы приходилось учитывать (делал я несколько лет назад принт-сниффер). Да, кстати, зачастую вывод текста идет не в последовательности текста, а в последовательности вывода на печать (особенно в броузерах такой эффект наблюдал), поэтому, чтобы получить корректный последовательный текст надо куски текста, полученные из буфера перехватываемых функций соотносить с координатами вывода. В общем задача не совсем простая, но вполне решаемая.
|