Есть задача создать службу которая будет перехватывать файл отправленных на печать, или как минимум путь до файла который был отправлен на печать. Это нужно, чтобы потом скопировать файл на сервер. Подскажите пожалуйста решение. Не могу понять можно ли это сделать. Среда выполнения windows 7/10.
Желательно пример реализации на C#.
Сам я таким не занимался.
На сколько я понимаю, тебе нужен Print Spooler API: https://docs.microsoft.com/en-us/windows/desktop/printdocs/printing-and-print-spooler-functions
Про теоретическую реализацию ты можешь почитать вот здесь: https://stackoverflow.com/questions/2693133/how-to-convert-a-printer-driver-to-a-stand-alone-console-application-which-can-ge/2752125#2752125
и вот здесь: https://stackoverflow.com/questions/3067245/how-to-create-own-xp-printer-driver/3104084#3104084
То есть следишь за PrintQueue и вытягиваешь информацию одтуда (а она там быть теоретически должна )
Если не получится, то как другой вариант можно создать свой виртуальный принтер, который будет делать что нужно и перенаправлять печатаемые страницы уже настоящим принтером. Но, через Print Spooler API должно и так все выйти как нужно...
Да, ответ линками, да это плохая практика. Но лучше чем отсутствие ответа и хотя бы как-то может помочь автору вопроса. :)
Я тут еще софт нашел: https://www.papercut.com
оч похоже что это готовая реализация того, что ты хочешь писать. Там есть фича Print Archiving при чем работать будет, даже, с сетевыми принтерами когда их много подключено.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей