Función SetJob

La función SetJob pausa, reanuda, cancela o reinicia un trabajo de impresión en una impresora especificada. También puede usar la función SetJob para establecer parámetros de trabajo de impresión, como la prioridad del trabajo de impresión y el nombre del documento.

Puede usar la función SetJob para proporcionar un comando a un trabajo de impresión, o para establecer parámetros de trabajo de impresión, o para realizar ambas acciones en la misma llamada. El valor del parámetro Command no afecta a cómo la función usa los parámetros Level y pJob . Además, puede usar SetJob con JOB_INFO_3 para vincular un conjunto de trabajos de impresión. Vea Comentarios para obtener más información.

Sintaxis

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

Parámetros

hPrinter [in]

Identificador del objeto de impresora de interés. Use la función OpenPrinter, OpenPrinter2 o AddPrinter para recuperar un identificador de impresora.

JobId [in]

Identificador que especifica el trabajo de impresión. Para obtener un identificador de trabajo de impresión, llame a la función AddJob o a la función StartDoc .

Si el parámetro Level se establece en 3, el parámetro JobId debe coincidir con el miembro JobId de la estructura de JOB_INFO_3 a la que apunta pJob.

Nivel [in]

Tipo de estructura de información del trabajo a la que apunta el parámetro pJob .

Todas las versiones de Windows: puede establecer el parámetro Level en 0, 1 o 2. Al establecer Level en 0, pJob debe ser NULL. Use estos valores cuando no establezca ningún parámetro de trabajo de impresión.

También puede establecer el parámetro Level en 3.

A partir de Windows Vista: también puede establecer el parámetro Level en 4.

pJob [in]

Puntero a una estructura que establece los parámetros del trabajo de impresión.

Todas las versiones de Windows: pJob pueden apuntar a una estructura de JOB_INFO_1 o JOB_INFO_2 .

pJob también puede apuntar a una estructura de JOB_INFO_3 . Debe tener JOB_ACCESS_ADMINISTER permiso de acceso para los trabajos especificados por los miembros JobId y NextJobId de la estructura JOB_INFO_3 .

A partir de Windows Vista: pJob también puede apuntar a una estructura de JOB_INFO_4 .

Si el parámetro Level es 0, pJob debe ser NULL.

Comando [in]

Operación de trabajo de impresión que se va a realizar. Este parámetro puede ser uno de los valores siguientes.

Valor Significado
JOB_CONTROL_CANCEL
No debe usarse. Para eliminar un trabajo de impresión, use JOB_CONTROL_DELETE.
JOB_CONTROL_PAUSE
Pausar el trabajo de impresión.
JOB_CONTROL_RESTART
Reinicie el trabajo de impresión. Solo se puede reiniciar un trabajo si estaba imprimiendo.
JOB_CONTROL_RESUME
Reanude un trabajo de impresión en pausa.
JOB_CONTROL_DELETE
Elimine el trabajo de impresión.
JOB_CONTROL_SENT_TO_PRINTER
Usado por monitores de puerto para finalizar el trabajo de impresión.
JOB_CONTROL_LAST_PAGE_EJECTED
Usado por monitores de idioma para finalizar el trabajo de impresión.
JOB_CONTROL_RETAIN
Windows Vista y versiones posteriores: mantenga el trabajo en la cola después de imprimirlo.
JOB_CONTROL_RELEASE
Windows Vista y versiones posteriores: libere el trabajo de impresión.

Puede usar la misma llamada a la función SetJob para establecer parámetros de trabajo de impresión y para proporcionar un comando a un trabajo de impresión. Por lo tanto, Command no necesita ser 0 si está estableciendo parámetros de trabajo de impresión, aunque puede ser.

Valor devuelto

Si la función se ejecuta correctamente, el valor devuelto es un valor distinto de cero.

Si la función no se realiza correctamente, el valor devuelto es cero.

Comentarios

Nota

Se trata de una función de bloqueo o sincrónica que podría no devolverse inmediatamente. La rapidez con la que devuelve esta función depende de factores en tiempo de ejecución, como el estado de red, la configuración del servidor de impresión y los factores de implementación del controlador de impresora que son difíciles de predecir al escribir una aplicación. Llamar a esta función desde un subproceso que administra la interacción con la interfaz de usuario podría hacer que la aplicación parezca que no responde.

Puede usar la función SetJob para establecer varios parámetros de trabajo de impresión proporcionando un puntero a un JOB_INFO_1, JOB_INFO_2, JOB_INFO_3 o estructura de JOB_INFO_4 que contenga los datos necesarios.

Para quitar o eliminar todos los trabajos de impresión de una impresora determinada, llame a la función SetPrinter con su parámetro Command establecido en PRINTER_CONTROL_PURGE.

Los siguientes miembros de una estructura de JOB_INFO_1, JOB_INFO_2 o JOB_INFO_4 se omiten en una llamada a SetJob: JobId, pPrinterName, pMachineName, pUserName, pDrivername, Size, Submitted, Time y TotalPages.

Debe tener PRINTER_ACCESS_ADMINISTER permiso de acceso para una impresora para cambiar la posición de un trabajo de impresión en la cola de impresión.

Si no desea establecer la posición de un trabajo de impresión en la cola de impresión, debe establecer el miembro Position del JOB_INFO_1, JOB_INFO_2 o JOB_INFO_4 estructura en JOB_POSITION_UNSPECIFIED.

Use la función SetJob con la estructura JOB_INFO_3 para vincular un conjunto de trabajos de impresión (también conocido como cadena). Esto resulta útil en situaciones en las que un único documento consta de varias partes que desea representar por separado. Para imprimir trabajos A, B, C y D en orden, llame a SetJob con JOB_INFO_4 para vincular A a B, B a C y C a D.

Si vincula trabajos de impresión, tenga en cuenta lo siguiente:

  • Los trabajos se pueden agregar al principio o al final de una cadena.

  • Todos los trabajos de la cadena deben tener el mismo tipo de datos.

  • La cadena debe estar completamente vinculada antes de que comience la cola, de lo contrario, el administrador de trabajos en cola puede imprimir y eliminar trabajos en cola antes de vincularlos todos. Hay dos maneras de evitar que la cadena se imprima prematuramente:

    • Pause el primer trabajo de la cadena hasta que la cadena esté completamente vinculada. El estado en pausa del primer trabajo rige el estado de todos los trabajos de la cadena.
    • Mantenga incompleto el primer trabajo, es decir, no llame a EndDoc o ScheduleJob para el primer trabajo. Sin embargo, si "print while spooling" está habilitado (el valor predeterminado), este método bloquea el puerto mientras se compila la cadena, lo que también impide la impresión de trabajos no relacionados.
  • La aplicación debe controlar el caso en el que el usuario elimina un trabajo en la cadena antes de que la cadena termine de imprimirse. GetLastError devuelve INVALID_PARAMETER cuando no existe un JobID.

Requisitos

Requisito Value
Cliente mínimo compatible
Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible
Windows 2000 Server [solo aplicaciones de escritorio]
Encabezado
WinSpool.h (incluya Windows.h)
Biblioteca
WinSpool.lib
Archivo DLL
WinSpool.drv
Nombres Unicode y ANSI
SetJobW (Unicode) y SetJobA (ANSI)

Consulte también

Impresión

Funciones de la API del administrador de trabajos de impresión

AddJob

GetJob

OpenPrinter

SetPrinter

JOB_INFO_1

JOB_INFO_2

JOB_INFO_3

JOB_INFO_4