Hi! pls very Urgent

I have a network of about 55 computers (netware & NT) all running Win98, XP and W2000 workstations. We have about 5 network printers and copiers to which a computer can print. What I'd like to do is build, if possible, a simple VB program to intercept what they are printing (from any application) and capture certain information about the print jobs before it gets sent off to the specified printer.

For example, when a user selects print from the menu in MS Word, and after the Ok button is pressed on the printers dialog window, have my program then pop up asking the user to fill in specific information (who they want to charge for the print job...this is typically an internal billing code, etc.).

The program would have to capture the name/driver of the printer users are printing to, the document they printed, number of pages, number of copies, date/time, etc.

Is/are there Windows API's to help in my programming of this application? I've been, unsuccessfully, searching MSDN, web sites, etc. on how to intercept/detect a print job. Any help would be greatly appreciated!

This is (normally) a job for the printer (hardware) since maybe there are programs that bypass the windows printer driver and print directly to the port of the PC or to the IP of printer (if this is a network printer) and hence not all printer documents will be logged.
Ex. If there is a printer attached to a parallel port of a PC and made "networked" via share then local programs can print directly to LPT1 without being noticed even by windows.
If you want ONLY specific programs to be logged then you must use specific abilities in these programs.