int StartDocW(HDC hdc, const DOCINFO *lpdi);
создать контекст асоциированый с hdc.
создать и сохранить в контексте свой CompatibleDC размером ( GetDeviceCaps(hdc, HORZRES), GetDeviceCaps(hdc, VERTRES))
создать файл для логирования , базируясь на lpdi->lpszDocName
int EndPage(HDC hdc);
найти контекст асоциированый с hdc. логировать текущую каритинку в hdc.
int EndDoc(HDC hdc);
удалить контекст асоциированый с hdc.
возможно нужно будет перехватывать и другие апи, например int StartPage(HDC hDC);
Здравствуйте, istok20, Вы писали:
I>пошерстил в хистори форума, но так и не нашел ответа на вопрос:
I>есть ли типовые решения (видимо это драйвер+апи) для перехвата печати принтера (с распечатываемыми изображениями) ?
Если необходимо модифицировать изображение, знать кто и что печатает, то задача очень сложная. Есть варианты с созданием виртуального принтера (вся печать идет через него, а потом отправляется на физический) — головная боль с разными драйверами.. А для модификации необходимо много чего патчить.. Всякие Adobe имеют свою точку зрения на печать..
Здравствуйте, anonymous185, Вы писали:
A>можно в процессе перехватывать следуюшие апи:
этого недостаточно для полноценного перехвата, т.к. есть direct write, спулер, а также всяческие полусофтовые принтеры со своим принт процессором. Нормально задача не решается в принципе, более-менее удовлетворительно — тотальными перехватами GDI функций и функций прямого доступа к принтеру с соотв. постпроцессинговой обработкой (т.к. есть PS/PCL принтеры например, то надо этот PS/PCL файл потом обработать как-то)