views:

85

answers:

1

I'm creating a postscript printer for windows 7 which will accept print jobs and forward them to real printers. It will be shared in the LAN and can receive print jobs from LAN computers. I want to find out from which computer a print job came from before forwarding them to a printer. How can I do this? Is the details available in the print job itself? Thanks

+2  A: 

Take a look at the GetJob and EnumJobs spooler api functions. They both return one of two structures, JOB_INFO_1 or JOB_INFO_2. Each structure contains a pMachineName field, which is the name of the name of the machine that created the print job. You may find the following links from pinvoke.net useful.

http://www.pinvoke.net/default.aspx/Structures.JOB_INFO_1

http://www.pinvoke.net/default.aspx/winspool/EnumJobs.html

Alternatively, you may also want to look into using WMI and the Win32_PrintJob class. Specifically the HostPrintQueue property.

Garett
Thank you very much I will check those and reply asap.
Zerone