Platform SDK: Active Directory, ADSI, and Directory Services |
The IADsPrintJob interface is designed for representing a print job. When a user submits a request to a printer to print a document, a print job is created in the print queue. The property methods allow you to access the information about a print job. Such information includes which printer does the printing, who submitted the document, when it was submitted, and how many pages will be printed.
To manage a print job across a network, use the IADsPrintJobOperations interface, which supports the functionality to examine the status of a print job and to pause or resume the operation of printing the document, and so on.
To access any print jobs in a print queue, call the IADsPrintQueueOperations::PrintJobs method to obtain the collection object holding all the print jobs in the print queue.
IADsPrintJob is a dual interface that inherits from IADs. The IADsPrintJob interface exposes the following property methods.
IUnknown methods | Description |
---|---|
QueryInterface | Returns pointers to supported interfaces. |
AddRef | Increments reference count. |
Release | Decrements reference count. |
IDispatch methods | Description |
---|---|
GetTypeInfoCount | Gets the number of type descriptions. |
GetTypeInfo | Gets a description of object's programmable interface. |
GetIDsOfNames | Maps name of method or property to DISPID. |
Invoke | Calls one of the object's methods, or gets and sets one of its properties. |
IADsPrintJob property methods | Description |
---|---|
get_HostPrintQueue | Gets the ADsPath string that names the print queue processing this print job. |
get_User | Name of user submitting print job. |
get_UserPath | Gets the ADsPath name for user to submit the print job. |
get_TimeSubmitted | Gets the time when the job was submitted to the print queue. |
get_TotalPages | Gets the total number of pages in the print job. |
get_Size | Gets the size of the print job in bytes. |
get/put_Description | Gets and sets the description of the print job. |
get/put_Priority | Gets and sets the priority of the print job. |
get/put_StartTime | Gets and sets the earliest time when the print job should be started. |
get/put_UntilTime | Gets and sets the time when the print job should be stopped. |
get/put_Notify | Gets and sets the user to be notified when job is completed. |
get/put_NotifyPath | The ADsPath string for user to be notified when the job is completed. |
The following Visual Basic code snippet shows how to manage a print job submitted to the printer, "\\aMachine\aPrinter".
Dim pq as IADsPrintQueue Dim pqo as IADsPrintQueueOperations Dim pj as IADsPrintJob Dim pjo as IADsPrintJobOperations Dim pjs as IADsCollection Set pq = GetObject("WinNT://aMachine/aPrinter") Set pqo = pq For Each pj in pqo.PrintJobs MsgBox pj.class MsgBox pj.description MsgBox pj.HostPrintQueue Set pjo = pj if Hex(pjo.status) = 10 ' printing pjo.Pause else pjo.Resume end if Next
The following C++ code snippet shows how to manage a print job submitted to the printer, "\\aMachine\aPrinter".
IADsPrintJobOperations *pjo; IADsPrintQueueOperations *pqo; HRESULT hr ; hr = ADsGetObject(L"WinNT://aMachine/aPrinter", IID_IADsPrintQueueOperations, (void**)&pqo); if (FAILED(hr)) exit(hr); IADsCollection *pColl; hr = pqo->PrintJobs(&pColl); IUnknown *pUnk = NULL; hr = pColl->get__NewEnum(&pUnk); pColl->Release(); if (FAILED(hr) ) exit(hr); IEnumVARIANT *pEnum; hr = pUnk->QueryInterface(IID_IEnumVARIANT,(void**)&pEnum); pUnk->Release(); if (FAILED(hr)) exit(hr); // Now Enumerate VARIANT var; ULONG lFetch; IDispatch *pDisp; long status; VariantInit(&var); hr = pEnum->Next(1, &var, &lFetch); while(hr == S_OK) { if (lFetch == 1) { pDisp = V_DISPATCH(&var); pDisp->QueryInterface(IID_IADsPrintJobOperations, (void**)&pjo); pjo->get_Status(&status); printf("Job status: %x\n",status); if(stats == ADS_JOB_PRINTING) { pjo.Pause(); } else { pjo.Resume(); } pjo->Release(); } VariantClear(&var); pDisp=NULL; hr = pEnum->Next(1, &var, &lFetch); }; hr = pEnum->Release(); hr = pqo->Release();
Windows NT/2000: Requires Windows 2000 (or Windows NT 4.0 with DSClient).
Windows 95/98: Requires Windows 95 or later (with DSClient).
Header: Declared in Iads.h.
IADsPrintJobOperations, IADsPrintQueueOperations::PrintJobs, IADsPrintJob Property Methods