When a print job is sent to a printer, it will go to the spool folder (by default it's $windows$\System32\spool\ directory) as a file and get deleted after the print job is done. So I guess you can use a filesystemwatcher to watch that spool folder any new file and perform desired actions from there.