Funzione SetJob

La funzione SetJob sospende, riprende, annulla o riavvia un processo di stampa in una stampante specificata. È anche possibile usare la funzione SetJob per impostare i parametri del processo di stampa, ad esempio la priorità del processo di stampa e il nome del documento.

È possibile usare la funzione SetJob per assegnare un comando a un processo di stampa o per impostare i parametri del processo di stampa oppure per eseguire entrambe le operazioni nella stessa chiamata. Il valore del parametro Command non influisce sul modo in cui la funzione usa i parametri Level e pJob . È anche possibile usare SetJob con JOB_INFO_3 per collegare un set di processi di stampa. Per ulteriori informazioni, vedere la sezione Osservazioni.

Sintassi

BOOL SetJob(
  _In_ HANDLE hPrinter,
  _In_ DWORD  JobId,
  _In_ DWORD  Level,
  _In_ LPBYTE pJob,
  _In_ DWORD  Command
);

Parametri

hPrinter [in]

Handle per l'oggetto stampante di interesse. Usare la funzione OpenPrinter, OpenPrinter2 o AddPrinter per recuperare un handle di stampante.

JobId [in]

Identificatore che specifica il processo di stampa. Si ottiene un identificatore di processo di stampa chiamando la funzione AddJob o la funzione StartDoc .

Se il parametro Level è impostato su 3, il parametro JobId deve corrispondere al membro JobId della struttura JOB_INFO_3 a cui fa riferimento pJob

Livello [in]

Tipo di struttura delle informazioni sul processo a cui fa riferimento il parametro pJob .

Tutte le versioni di Windows: è possibile impostare il parametro Level su 0, 1 o 2. Quando si imposta Livello su 0, pJob deve essere NULL. Usare questi valori quando non si impostano parametri di processo di stampa.

È anche possibile impostare il parametro Level su 3.

A partire da Windows Vista: è anche possibile impostare il parametro Level su 4.

pJob [in]

Puntatore a una struttura che imposta i parametri del processo di stampa.

Tutte le versioni di Windows: pJob possono puntare a una struttura JOB_INFO_1 o JOB_INFO_2 .

pJob può anche puntare a una struttura JOB_INFO_3 . È necessario disporre dell'autorizzazione di accesso JOB_ACCESS_ADMINISTER per i processi specificati dai membri JobId e NextJobId della struttura JOB_INFO_3 .

A partire da Windows Vista: pJob può anche puntare a una struttura JOB_INFO_4 .

Se il parametro Level è 0, pJob deve essere NULL.

Comando [in]

Operazione di stampa da eseguire. Questo parametro può avere uno dei valori seguenti.

Valore Significato
JOB_CONTROL_CANCEL
Non usare. Per eliminare un processo di stampa, usare JOB_CONTROL_DELETE.
JOB_CONTROL_PAUSE
Sospendere il processo di stampa.
JOB_CONTROL_RESTART
Riavviare il processo di stampa. Un processo può essere riavviato solo se è stato stampato.
JOB_CONTROL_RESUME
Riprendere un processo di stampa sospeso.
JOB_CONTROL_DELETE
Eliminare il processo di stampa.
JOB_CONTROL_SENT_TO_PRINTER
Usato dai monitoraggi delle porte per terminare il processo di stampa.
JOB_CONTROL_LAST_PAGE_EJECTED
Usato dai monitoraggi linguistici per terminare il processo di stampa.
JOB_CONTROL_RETAIN
Windows Vista e versioni successive: mantenere il processo nella coda dopo la stampa.
JOB_CONTROL_RELEASE
Windows Vista e versioni successive: rilasciare il processo di stampa.

È possibile usare la stessa chiamata alla funzione SetJob per impostare i parametri del processo di stampa e per assegnare un comando a un processo di stampa. Pertanto, il comando non deve essere 0 se si impostano parametri di processo di stampa, anche se può essere.

Valore restituito

Se la funzione ha esito positivo, il valore restituito è un valore diverso da zero.

Se la funzione ha esito negativo, il valore restituito è zero.

Commenti

Nota

Si tratta di una funzione di blocco o sincrona e potrebbe non restituire immediatamente. La velocità con cui questa funzione restituisce dipende da fattori di runtime come lo stato della rete, la configurazione del server di stampa e i fattori di implementazione del driver della stampante difficili da prevedere durante la scrittura di un'applicazione. La chiamata a questa funzione da un thread che gestisce l'interazione con l'interfaccia utente potrebbe rendere l'applicazione non rispondente.

È possibile usare la funzione SetJob per impostare vari parametri di processo di stampa fornendo un puntatore a un JOB_INFO_1, JOB_INFO_2, JOB_INFO_3o JOB_INFO_4 struttura che contiene i dati necessari.

Per rimuovere o eliminare tutti i processi di stampa per una determinata stampante, chiamare la funzione SetPrinter con il parametro Command impostato su PRINTER_CONTROL_PURGE.

I membri seguenti di una struttura JOB_INFO_1, JOB_INFO_2 o JOB_INFO_4 vengono ignorati in una chiamata a SetJob: JobId, pPrinterName, pMachineName, pUserName, pDrivername, Size, Submitted, Time e TotalPages.

È necessario avere PRINTER_ACCESS_ADMINISTER autorizzazione di accesso per una stampante per modificare la posizione di un processo di stampa nella coda di stampa.

Se non si vuole impostare la posizione di un processo di stampa nella coda di stampa, è necessario impostare il membro Position del JOB_INFO_1, JOB_INFO_2 o JOB_INFO_4 struttura su JOB_POSITION_UNSPECIFIED.

Usare la funzione SetJob con la struttura JOB_INFO_3 per collegare un set di processi di stampa (noto anche come catena). Ciò è utile in situazioni in cui un singolo documento è costituito da diverse parti da eseguire separatamente. Per stampare i processi A, B, C e D in ordine, chiamare SetJob con JOB_INFO_4 per collegare A a B, B a C e C a D.

Se si collegano i processi di stampa, tenere presente quanto segue:

  • I processi possono essere aggiunti all'inizio o alla fine di una catena.

  • Tutti i processi della catena devono avere lo stesso tipo di dati.

  • La catena deve essere completamente collegata prima dell'inizio del spooling, altrimenti il spooler può stampare ed eliminare processi spooled prima di collegarli tutti. Esistono due modi per impedire la stampa prematura della catena:

    • Sospendere il primo processo nella catena fino a quando la catena non è completamente collegata. Lo stato sospeso del primo processo regola lo stato di tutti i processi nella catena.
    • Mantenere il primo processo incompleto, ovvero non chiamare EndDoc o ScheduleJob per il primo processo. Tuttavia, se 'print while spooling' è abilitato (il valore predefinito), questo metodo blocca la porta mentre viene compilata la catena, che impedisce anche la stampa di processi non correlati.
  • L'applicazione deve gestire il caso in cui l'utente elimina un processo nella catena prima che la catena finisca la stampa. GetLastError restituisce INVALID_PARAMETER quando un JobID non esiste.

Requisiti

Requisito Valore
Client minimo supportato
Windows 2000 Professional [solo app desktop]
Server minimo supportato
Windows 2000 Server [solo app desktop]
Intestazione
WinSpool.h (include Windows.h)
Libreria
WinSpool.lib
DLL
WinSpool.drv
Nomi Unicode e ANSI
SetJobW (Unicode) e SetJobA (ANSI)

Vedi anche

Stampa

Funzioni dell'API spooler di stampa

Aggiungijob

GetJob

OpenPrinter

Setprinter

JOB_INFO_1

JOB_INFO_2

JOB_INFO_3

JOB_INFO_4