SetJob 関数

SetJob 関数は、指定されたプリンターで印刷ジョブを一時停止、再開、取り消し、または再起動します。 また、SetJob 関数を使用して、印刷ジョブの優先順位やドキュメント名などの印刷ジョブ パラメーターを設定することもできます。

SetJob 関数を使用すると、印刷ジョブにコマンドを指定したり、印刷ジョブ パラメーターを設定したり、同じ呼び出しで両方を実行したりできます。 Command パラメーターの値は、関数で Level パラメーターと pJob パラメーターを使用する方法には影響しません。 また、 setJobJOB_INFO_3 を使用して、一連の印刷ジョブをリンクすることもできます。 詳細については、「解説」を参照してください。

構文

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

パラメーター

hPrinter [in]

目的のプリンター オブジェクトへのハンドル。 プリンター ハンドルを取得するには、 OpenPrinterOpenPrinter2、または AddPrinter 関数を使用します。

JobId [in]

印刷ジョブを指定する識別子。 印刷ジョブ識別子を取得するには、 AddJob 関数または StartDoc 関数を呼び出します。

Level パラメーターが 3 に設定されている場合、JobId パラメーターは pJob が指すJOB_INFO_3構造体の JobId メンバーと一致する必要があります

レベル [入力]

pJob パラメーターによって指されるジョブ情報構造の型。

すべてのバージョンの Windows: Level パラメーターを 0、1、または 2 に設定できます。 Level を 0 に設定すると、pJobNULL になります。 印刷ジョブ パラメーターを設定しない場合は、これらの値を使用します。

Level パラメーターを 3 に設定することもできます。

Windows Vista 以降: Level パラメーターを 4 に設定することもできます。

pJob [in]

印刷ジョブ パラメーターを設定する構造体へのポインター。

Windows のすべてのバージョン: pJob、JOB_INFO_1 または JOB_INFO_2 構造体を指すことができます。

pJob は、 JOB_INFO_3 構造体を指すこともできます。 JOB_INFO_3構造体のJobId メンバーと NextJobId メンバーによって指定されたジョブに対するJOB_ACCESS_ADMINISTERアクセス許可が必要です。

Windows Vista 以降: pJob、JOB_INFO_4構造体を指すこともできます。

Level パラメーターが 0 の場合、pJobNULL である必要があります。

Command [in]

実行する印刷ジョブ操作。 このパラメーターには、次の値のいずれかを指定できます。

説明
JOB_CONTROL_CANCEL
使用しないでください。 印刷ジョブを削除するには、 JOB_CONTROL_DELETEを使用します。
JOB_CONTROL_PAUSE
印刷ジョブを一時停止します。
JOB_CONTROL_RESTART
印刷ジョブを再起動します。 ジョブは、印刷中の場合にのみ再開できます。
JOB_CONTROL_RESUME
一時停止中の印刷ジョブを再開します。
JOB_CONTROL_DELETE
印刷ジョブを削除します。
JOB_CONTROL_SENT_TO_PRINTER
印刷ジョブを終了するためにポート モニターによって使用されます。
JOB_CONTROL_LAST_PAGE_EJECTED
印刷ジョブを終了するために言語モニターによって使用されます。
JOB_CONTROL_RETAIN
Windows Vista 以降: ジョブを印刷後もキューに保持します。
JOB_CONTROL_RELEASE
Windows Vista 以降: 印刷ジョブを解放します。

SetJob 関数に対して同じ呼び出しを使用して、印刷ジョブ パラメーターを設定したり、印刷ジョブにコマンドを指定したりできます。 したがって、印刷ジョブ パラメーターを設定する場合は 、Command を 0 にする必要はありません。ただし、 は可能です。

戻り値

関数が成功した場合、戻り値は 0 以外の値になります。

関数が失敗した場合は、0 を返します。

注釈

注意

これはブロック関数または同期関数であり、すぐには返されない場合があります。 この関数が返す速度は、アプリケーションの作成時に予測が困難なネットワーク状態、プリント サーバーの構成、プリンター ドライバーの実装要因などの実行時の要因によって異なります。 ユーザー インターフェイスとの対話を管理するスレッドからこの関数を呼び出すと、アプリケーションが応答しなくなる可能性があります。

SetJob 関数を使用すると、必要なデータを含むJOB_INFO_1、JOB_INFO_2JOB_INFO_3、またはJOB_INFO_4構造体へのポインターを指定することで、さまざまな印刷ジョブ パラメーターを設定できます

特定のプリンターのすべての印刷ジョブを削除または削除するには、Command パラメーターを PRINTER_CONTROL_PURGE に設定して SetPrinter 関数を呼び出します。

SetJob の呼び出しでは、JOB_INFO_1JOB_INFO_2、またはJOB_INFO_4構造体の次のメンバーは無視されます:JobIdpPrinterNamepMachineNamepUserNamepDrivernameSizeSubmittedTimeTotalPages

印刷キュー内 印刷ジョブの位置を変更するには、プリンターのPRINTER_ACCESS_ADMINISTERアクセス許可が必要です。

印刷キューで印刷ジョブの位置を設定しない場合は、JOB_INFO_1、JOB_INFO_2、またはJOB_INFO_4構造体の Position メンバーをJOB_POSITION_UNSPECIFIEDに設定する必要があります。

setJob 関数を JOB_INFO_3 構造体と共に使用して、一連の印刷ジョブ (チェーンとも呼ばれます) をリンクします。 これは、1 つのドキュメントが個別にレンダリングする複数のパーツで構成されている場合に便利です。 ジョブ A、B、C、D を順番に出力するには、JOB_INFO_4を指定して SetJob を呼び出し、A を B から C に、C を D にリンクします。

印刷ジョブをリンクする場合は、次の点に注意してください。

  • ジョブは、チェーンの先頭または末尾に追加できます。

  • チェーン内のすべてのジョブのデータ型は同じである必要があります。

  • スプーリングを開始する前にチェーンを完全にリンクする必要があります。それ以外の場合、スプーラーはスプール・ジョブをすべてリンクする前に印刷および削除することができます。 チェーンが途中で印刷されないようにするには、次の 2 つの方法があります。

    • チェーンが完全にリンクされるまで、チェーン内の最初のジョブを一時停止します。 最初のジョブの一時停止状態は、チェーン内のすべてのジョブの状態を制御します。
    • 最初のジョブを不完全のままにします。つまり、最初のジョブに対して EndDoc または ScheduleJob を呼び出さないでください。 ただし、"スプール中に印刷" が有効になっている場合 (既定値)、このメソッドはチェーンのビルド中にポートをブロックします。これにより、関連しないジョブの印刷も防止されます。
  • アプリケーションは、チェーンの印刷が終了する前に、ユーザーがチェーン内のジョブを削除するケースを処理する必要があります。 GetLastError は 、JobID が存在しない場合に INVALID_PARAMETER を返します。

要件

要件
サポートされている最小のクライアント
Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー
Windows 2000 Server [デスクトップ アプリのみ]
ヘッダー
WinSpool.h (Windows.h を含む)
ライブラリ
WinSpool.lib
[DLL]
WinSpool.drv
Unicode 名と ANSI 名
SetJobW (Unicode) と SetJobA (ANSI)

関連項目

印刷

印刷スプーラー API 関数

AddJob

GetJob

OpenPrinter

SetPrinter

JOB_INFO_1

JOB_INFO_2

JOB_INFO_3

JOB_INFO_4