SetJob-Funktion

Mit der SetJob-Funktion wird ein Druckauftrag auf einem angegebenen Drucker angehalten, fortgesetzt, abgebrochen oder neu gestartet. Sie können auch die SetJob-Funktion verwenden, um Druckauftragsparameter festzulegen, z. B. die Druckauftragspriorität und den Dokumentnamen.

Sie können die SetJob-Funktion verwenden, um einem Druckauftrag einen Befehl zu erteilen, Druckauftragsparameter festzulegen oder beides im selben Aufruf auszuführen. Der Wert des Befehlsparameters wirkt sich nicht darauf aus, wie die Funktion die Parameter Level und pJob verwendet. Außerdem können Sie SetJob mit JOB_INFO_3 verwenden, um eine Reihe von Druckaufträgen miteinander zu verknüpfen. Weitere Informationen finden Sie unter Hinweise.

Syntax

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

Parameter

hPrinter [in]

Ein Handle für das druckerobjekt von Interesse. Verwenden Sie die Funktion OpenPrinter, OpenPrinter2 oder AddPrinter , um einen Druckerhandle abzurufen.

JobId [in]

Bezeichner, der den Druckauftrag angibt. Sie erhalten einen Druckauftragsbezeichner, indem Sie die AddJob-Funktion oder die StartDoc-Funktion aufrufen.

Wenn der Level-Parameter auf 3 festgelegt ist, muss der JobId-Parameter mit dem JobId-Member der JOB_INFO_3 Struktur übereinstimmen, auf die von pJob verwiesen wird.

Ebene [in]

Der Typ der Auftragsinformationsstruktur, auf die der pJob-Parameter verweist.

Alle Versionen von Windows: Sie können den Level-Parameter auf 0, 1 oder 2 festlegen. Wenn Sie Level auf 0 festlegen, sollte pJobNULL sein. Verwenden Sie diese Werte, wenn Sie keine Druckauftragsparameter festlegen.

Sie können den Level-Parameter auch auf 3 festlegen.

Ab Windows Vista: Sie können den Level-Parameter auch auf 4 festlegen.

pJob [in]

Ein Zeiger auf eine Struktur, die die Druckauftragsparameter festlegt.

Alle Versionen von Windows: pJob kann auf eine JOB_INFO_1 - oder JOB_INFO_2-Struktur verweisen.

pJob kann auch auf eine JOB_INFO_3 Struktur verweisen. Sie müssen über JOB_ACCESS_ADMINISTER Zugriffsberechtigung für die Aufträge verfügen, die durch die Mitglieder JobId und NextJobId der JOB_INFO_3-Struktur angegeben werden.

Ab Windows Vista: pJob kann auch auf eine JOB_INFO_4 Struktur verweisen.

Wenn der Level-Parameter 0 ist, sollte pJobNULL sein.

Befehl [in]

Der auszuführende Druckauftragsvorgang. Dieser Parameter kann einen der folgenden Werte annehmen.

Wert Bedeutung
JOB_CONTROL_CANCEL
Darf nicht verwendet werden. Verwenden Sie zum Löschen eines Druckauftrags JOB_CONTROL_DELETE.
JOB_CONTROL_PAUSE
Halten Sie den Druckauftrag an.
JOB_CONTROL_RESTART
Starten Sie den Druckauftrag neu. Ein Auftrag kann nur neu gestartet werden, wenn er gedruckt wurde.
JOB_CONTROL_RESUME
Fortsetzen eines angehaltenen Druckauftrags.
JOB_CONTROL_DELETE
Löschen Sie den Druckauftrag.
JOB_CONTROL_SENT_TO_PRINTER
Wird von Portmonitoren verwendet, um den Druckauftrag zu beenden.
JOB_CONTROL_LAST_PAGE_EJECTED
Wird von Sprachmonitoren verwendet, um den Druckauftrag zu beenden.
JOB_CONTROL_RETAIN
Windows Vista und höher: Behalten Sie den Auftrag nach dem Drucken in der Warteschlange.
JOB_CONTROL_RELEASE
Windows Vista und höher: Freigeben des Druckauftrags.

Sie können denselben Aufruf der SetJob-Funktion verwenden, um Druckauftragsparameter festzulegen und einem Druckauftrag einen Befehl zu erteilen. Daher muss der Befehl nicht 0 sein, wenn Sie Druckauftragsparameter festlegen, obwohl dies sein kann.

Rückgabewert

Wenn die Funktion erfolgreich ist, ist der Rückgabewert ein Nichtzero-Wert.

Wenn die Funktion fehlerhaft ist, ist der Rückgabewert null.

Bemerkungen

Hinweis

Dies ist eine blockierende oder synchrone Funktion und wird möglicherweise nicht sofort zurückgegeben. Wie schnell diese Funktion zurückgibt, hängt von Laufzeitfaktoren wie Netzwerk-status, Druckserverkonfiguration und Druckertreiberimplementierungsfaktoren ab, die beim Schreiben einer Anwendung schwer vorherzusagen sind. Wenn Sie diese Funktion über einen Thread aufrufen, der die Interaktion mit der Benutzeroberfläche verwaltet, kann die Anwendung nicht reagieren.

Sie können die SetJob-Funktion verwenden, um verschiedene Druckauftragsparameter festzulegen, indem Sie einen Zeiger auf eine JOB_INFO_1-, JOB_INFO_2-, JOB_INFO_3- oder JOB_INFO_4-Struktur bereitstellen, die die erforderlichen Daten enthält.

Um alle Druckaufträge für einen bestimmten Drucker zu entfernen oder zu löschen, rufen Sie die SetPrinter-Funktion auf, deren Befehlsparameter auf PRINTER_CONTROL_PURGE festgelegt ist.

Die folgenden Elemente einer JOB_INFO_1-, JOB_INFO_2- oder JOB_INFO_4-Struktur werden bei einem Aufruf von SetJob ignoriert: JobId, pPrinterName, pMachineName, pUserName, pDrivername, Size, Submitted, Time und TotalPages.

Sie benötigen PRINTER_ACCESS_ADMINISTER Zugriffsberechtigung für einen Drucker, um die Position eines Druckauftrags in der Druckwarteschlange zu ändern.

Wenn Sie die Position eines Druckauftrags in der Druckwarteschlange nicht festlegen möchten, sollten Sie den Position-Member der JOB_INFO_1-, JOB_INFO_2- oder JOB_INFO_4 Struktur auf JOB_POSITION_UNSPECIFIED festlegen.

Verwenden Sie die SetJob-Funktion mit der JOB_INFO_3-Struktur , um eine Gruppe von Druckaufträgen (auch als Kette bezeichnet) miteinander zu verknüpfen. Dies ist nützlich in Situationen, in denen ein einzelnes Dokument aus mehreren Teilen besteht, die Sie separat rendern möchten. Um die Aufträge A, B, C und D in der richtigen Reihenfolge zu drucken, rufen Sie SetJob mit JOB_INFO_4 auf, um A mit B, B mit C und C mit D zu verknüpfen.

Wenn Sie Druckaufträge verknüpfen, beachten Sie Folgendes:

  • Aufträge können am Anfang oder Ende einer Kette hinzugefügt werden.

  • Alle Aufträge in der Kette müssen denselben Datentyp aufweisen.

  • Die Kette muss vollständig verknüpft sein, bevor das Spooling beginnt. Andernfalls kann der Spooler Spooler Spooled-Aufträge drucken und löschen, bevor Sie sie alle verknüpfen. Es gibt zwei Möglichkeiten, die Kette vor dem vorzeitigen Drucken zu bewahren:

    • Halten Sie den ersten Auftrag in der Kette an, bis die Kette vollständig verknüpft ist. Der angehaltene Zustand des ersten Auftrags bestimmt den Zustand aller Aufträge in der Kette.
    • Halten Sie den ersten Auftrag unvollständig, d. h. rufen Sie für den ersten Auftrag nicht EndDoc oder ScheduleJob auf. Wenn jedoch "Drucken beim Spooling" aktiviert ist (Standard), blockiert diese Methode den Port, während die Kette erstellt wird, wodurch auch das Drucken nicht verwandter Aufträge verhindert wird.
  • Die Anwendung muss den Fall behandeln, in dem der Benutzer einen Auftrag in der Kette löscht, bevor die Kette den Druck beendet. GetLastError gibt INVALID_PARAMETER zurück, wenn keine JobID vorhanden ist.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client)
Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server)
Windows 2000 Server [nur Desktop-Apps]
Header
WinSpool.h (einschließlich Windows.h)
Bibliothek
WinSpool.lib
DLL
WinSpool.drv
Unicode- und ANSI-Name
SetJobW (Unicode) und SetJobA (ANSI)

Siehe auch

Drucken

Druckspooler-API-Funktionen

Addjob

GetJob

OpenPrinter

SetPrinter

JOB_INFO_1

JOB_INFO_2

JOB_INFO_3

JOB_INFO_4