Hi, yes, i fully understand the complexity and i also believe its likely impossible to be 100% accurate unless you have a dedicated printer as you refer to with the capability built in. Even then there's no guarantee the end result is legible due to fuser failure for laser printers of clogged ink heads. Almost all of the logging i require for my project can easily be gathered from manipulation of the database ie, day, time, report name, printer name, port, who requested the print, to which printer etc. including counting. The argument is that even after all this how do we know the print request was actioned and successful so we can identify unsuccessful thus not adding to the count with successful being that the printer printed the request. This logging combined with some simple checking of the spooler of the printer identifying the state of a printer spool JOBS and check for Status Error, Offline, Paper Out, Blocked would be enough. The fact that it successfully printed or not is not that important to me; more importantly is the fact that a request was made to print it in the first place therefore this is easily arbitrated. The fact it came out of the printer of not is irrespective however knowing this would help for sure. and this make the logging more accurate.
This article describes how to get the status of a printer and a print job by using the Win32 Spooler.
docs.microsoft.com