Вы хотите настроить службу, которая прослушивает события уведомления об изменении принтера, используя функции FindFirstPrinterChangeNotification , FindNextPrinterChangeNotification и FindClosePrinterChangeNotification .И послушайте событие PRINTER_CHANGE_JOB.При возникновении события задания на печать вы можете получить доступ к необходимой информации о задании из структуры PRINTER_NOTIFY_INFO_DATA .
Этот метод следует использовать с добавлением соли.По своему опыту я обнаружил, что события принтера ненадежны, когда сервер находится под нагрузкой, и одновременно выполняется много заданий на печать.Некоторые события принтера не будут запускаться.
Очевидно, что это решение потребует большого количества P-Invoking & Marshalling, поэтому я желаю вам удачи.Если написание приложения на C ++ является вариантом, то в этом случае, вероятно, будет проще, чем на C #.