winspool.h and Print Queue / Job Watching

Okay I have created a Program that receives printer notifications.

So far I can tell when a Print Job is added to the Print Queue and retreive the Job Name, Document Name and User who sent the job to print.
   This is great HOWEVER - How can I tell when:
A.) A job has completed printing and been removed from the queue and which job that was.
B.) A Job has been deleted from the queue by another user - i.e. it never gets printed - and which job that was.


So far my program works like this.

OpenPrinter()
FindFirstPrinterChangeNotification()
...Wait for Notification...
 FindNextPrinterChangeNotification()
 if(PRINTER_CHANGE_ADD_JOB)
 {
  GetJob()
  ...Print Job Info to the Screen...
 }
FreePrinterNotifyInfo(pNotifyInfo);
FindClosePrinterChangeNotification(hPrinterEvent);
ClosePrinter(hPrinter);

For Source code see http://www.dynamic-server.net/pqwatch.zip

Thanks

Adam Retter
adam@cosmic.org.uk
adamretterAsked:
Who is Participating?
 
jkrConnect With a Mentor Commented:
Have you seen http://support.microsoft.com/default.aspx?scid=kb;EN-US;q160129 ("HOWTO: Get the Status of a Printer and a Print Job (Q160129)")? This should anser your question (even though it means "polling" the status)
0
 
adamretterAuthor Commented:
How fequently should I poll using EnumJobs to make sure that I capture all Jobs, but not so frequently that it ties the system down?

0
 
jkrCommented:
Good question - that will depend on the system and its performance. As a rule of thumb, I'd use an interval that is about half the time (or slightly less) the printer needs to produce a page...

0
Never miss a deadline with monday.com

The revolutionary project management tool is here!   Plan visually with a single glance and make sure your projects get done.

 
jkrCommented:
Hmm, did you have a chance to try it?
0
 
adamretterAuthor Commented:
Thanks, Yup am working on it at the moment.

An interval of higher than about 100ms and you seem to drop job's.

Will let you know how i get on...
0
 
jkrCommented:
Anything new on this one? :o)
0
 
griesshCommented:
Dear adamretter

I think you forgot this question. I will ask Community Support to close it unless you finalize it within 7 days. You can always request to keep this question open. But remember, experts can only help you if you provide feedback to their questions.
Unless there is objection or further activity,  I will suggest to accept

     "jkr"

comment(s) as an answer.

If you think your question was not answered at all, you can post a request in Community support (please include this link) to refund your points. The link to the Community Support area is: http://www.experts-exchange.com/commspt/

PLEASE DO NOT ACCEPT THIS COMMENT AS AN ANSWER!
======
Werner
0
 
MindphaserCommented:
Force accepted

** Mindphaser - Community Support Moderator **
0
 
adamretterAuthor Commented:
Okay hope to post some more info soon
0
All Courses

From novice to tech pro — start learning today.