Condividi tramite


Interfaccia IADsPrintJob (iads.h)

L'interfaccia IADsPrintJob è un'interfaccia doppia che eredita da ID. È progettato per rappresentare un processo di stampa. Quando un utente invia una richiesta a una stampante per stampare un documento, viene creato un processo di stampa nella coda di stampa. I metodi di proprietà consentono di accedere alle informazioni su un processo di stampa. Tali informazioni includono la stampante che esegue la stampa, che ha inviato il documento, quando il documento è stato inviato e il numero di pagine da stampare.

Ereditarietà

L'interfaccia IADsPrintJob eredita da IDispatch e IAD. IADsPrintJob include anche questi tipi di membri:

Commenti

Per gestire un processo di stampa in una rete, usare l'interfaccia IADsPrintJobOperations , che supporta la funzionalità per esaminare lo stato di un processo di stampa e per sospendere o riprendere l'operazione di stampa del documento e così via.

Per accedere a tutti i processi di stampa in una coda di stampa, chiamare il metodo IADsPrintQueueOperations::P rintJobs per ottenere l'oggetto raccolta che contiene tutti i processi di stampa nella coda di stampa.

Esempio

Nell'esempio di codice seguente viene illustrato come gestire un processo di stampa inviato alla stampante" "\aMachine\aPrinter".

Dim pq As IADsPrintQueue
Dim pqo As IADsPrintQueueOperations
Dim pj As IADsPrintJob
Dim pjo As IADsPrintJobOperations
Dim pjs As IADsCollection

On Error GoTo Cleanup
 
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

Cleanup:
    If (Err.Number<>0) Then
        MsgBox("An error has occurred. " & Err.Number)
    End If
    Set pq = Nothing
    Set pqo = Nothing
    Set pj = Nothing
    Set pjo = Nothing
    Set pjs = Nothing

Nell'esempio di codice seguente viene illustrato come gestire un processo di stampa inviato alla stampante" "\aMachine\aPrinter".

IADsPrintJobOperations *pjo = NULL;
IADsPrintQueueOperations *pqo = NULL;
IADsCollection *pColl = NULL;
IUnknown *pUnk = NULL;
IEnumVARIANT *pEnum = NULL;
VARIANT var;
ULONG lFetch = 0;
IDispatch *pDisp = NULL;

long status;

HRESULT hr = S_OK;
hr = ADsGetObject(L"WinNT://aMachine/aPrinter", 
                  IID_IADsPrintQueueOperations, 
                  (void**)&pqo);
if(FAILED(hr)){goto Cleanup;}

hr = pqo->PrintJobs(&pColl);

hr = pColl->get__NewEnum(&pUnk);
if(FAILED(hr)){goto Cleanup;}

hr = pUnk->QueryInterface(IID_IEnumVARIANT,(void**)&pEnum);
if(FAILED(hr)){goto Cleanup;}

// Now Enumerate
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();
    }
    pDisp->Release();
    VariantClear(&var);
    hr = pEnum->Next(1, &var, &lFetch);
};

Cleanup:
    VariantClear(&var);
    if(pColl) pColl->Release();
    if(pUnk) pUnk->Release();
    if(pEnum) pEnum->Release();
    if(pqo) pqo->Release();

Requisiti

   
Client minimo supportato Windows Vista
Server minimo supportato Windows Server 2008
Piattaforma di destinazione Windows
Intestazione iads.h

Vedi anche

ID

Metodi di proprietà IADsPrintJob

IADsPrintJobOperations

IADsPrintQueueOperations::P rintJobs

Idispatch