Fungsi SetJob

Fungsi SetJob menjeda, melanjutkan, membatalkan, atau memulai ulang tugas cetak pada printer tertentu. Anda juga dapat menggunakan fungsi SetJob untuk mengatur parameter pekerjaan cetak, seperti prioritas pekerjaan cetak dan nama dokumen.

Anda dapat menggunakan fungsi SetJob untuk memberikan perintah ke pekerjaan cetak, atau untuk mengatur parameter pekerjaan cetak, atau untuk melakukan keduanya dalam panggilan yang sama. Nilai parameter Perintah tidak memengaruhi cara fungsi menggunakan parameter Level dan pJob . Selain itu, Anda dapat menggunakan SetJob dengan JOB_INFO_3 untuk menautkan satu set pekerjaan cetak. Lihat Keterangan untuk informasi selengkapnya.

Sintaks

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

Parameter

hPrinter [in]

Handel ke objek printer yang diminati. Gunakan fungsi OpenPrinter, OpenPrinter2, atau AddPrinter untuk mengambil handel printer.

JobId [in]

Pengidentifikasi yang menentukan pekerjaan cetak. Anda mendapatkan pengidentifikasi pekerjaan cetak dengan memanggil fungsi AddJob atau fungsi StartDoc .

Jika parameter Level diatur ke 3, parameter JobId harus cocok dengan anggota JobId dari struktur JOB_INFO_3 yang ditunjukkan oleh pJob

Level [in]

Jenis struktur informasi pekerjaan yang ditunjukkan oleh parameter pJob .

Semua versi Windows: Anda dapat mengatur parameter Tingkat ke 0, 1, atau 2. Ketika Anda mengatur Level ke 0, pJob harus NULL. Gunakan nilai-nilai ini saat Anda tidak mengatur parameter pekerjaan cetak apa pun.

Anda juga dapat mengatur parameter Level ke 3.

Dimulai dengan Windows Vista: Anda juga dapat mengatur parameter Tingkat ke 4.

pJob [in]

Penunjuk ke struktur yang mengatur parameter pekerjaan cetak.

Semua versi Windows: pJob dapat menunjuk ke struktur JOB_INFO_1 atau JOB_INFO_2 .

pJob juga dapat menunjuk ke struktur JOB_INFO_3 . Anda harus memiliki izin akses JOB_ACCESS_ADMINISTER untuk pekerjaan yang ditentukan oleh anggota JobId dan NextJobId dari struktur JOB_INFO_3 .

Dimulai dengan Windows Vista: pJob juga dapat menunjuk ke struktur JOB_INFO_4 .

Jika parameter Level adalah 0, pJob harus NULL.

Command [in]

Operasi tugas cetak yang akan dilakukan. Parameter ini bisa menjadi salah satu nilai berikut.

Nilai Makna
JOB_CONTROL_CANCEL
Jangan gunakan. Untuk menghapus pekerjaan cetak, gunakan JOB_CONTROL_DELETE.
JOB_CONTROL_PAUSE
Jeda tugas cetak.
JOB_CONTROL_RESTART
Mulai ulang tugas cetak. Pekerjaan hanya dapat dimulai ulang jika sedang mencetak.
JOB_CONTROL_RESUME
Lanjutkan tugas cetak yang dijeda.
JOB_CONTROL_DELETE
Hapus pekerjaan cetak.
JOB_CONTROL_SENT_TO_PRINTER
Digunakan oleh pemantau port untuk mengakhiri tugas cetak.
JOB_CONTROL_LAST_PAGE_EJECTED
Digunakan oleh pemantau bahasa untuk mengakhiri tugas cetak.
JOB_CONTROL_RETAIN
Windows Vista dan yang lebih baru: Simpan pekerjaan dalam antrean setelah dicetak.
JOB_CONTROL_RELEASE
Windows Vista dan yang lebih baru: Lepaskan tugas cetak.

Anda dapat menggunakan panggilan yang sama ke fungsi SetJob untuk mengatur parameter pekerjaan cetak dan untuk memberikan perintah ke pekerjaan cetak. Dengan demikian, Command tidak perlu 0 jika Anda mengatur parameter pekerjaan cetak, meskipun bisa.

Nilai kembali

Jika fungsi berhasil, nilai yang dikembalikan adalah nilai bukan nol.

Jika fungsi gagal, nilai yang dikembalikan adalah nol.

Keterangan

Catatan

Ini adalah fungsi pemblokiran atau sinkron dan mungkin tidak segera dikembalikan. Seberapa cepat fungsi ini kembali tergantung pada faktor run-time seperti status jaringan, konfigurasi server cetak, dan faktor implementasi driver printer yang sulit diprediksi saat menulis aplikasi. Memanggil fungsi ini dari utas yang mengelola interaksi dengan antarmuka pengguna dapat membuat aplikasi tampak tidak responsif.

Anda dapat menggunakan fungsi SetJob untuk mengatur berbagai parameter pekerjaan cetak dengan menyediakan penunjuk ke struktur JOB_INFO_1, JOB_INFO_2, JOB_INFO_3, atau JOB_INFO_4 yang berisi data yang diperlukan.

Untuk menghapus atau menghapus semua pekerjaan cetak untuk printer tertentu, panggil fungsi SetPrinter dengan parameter Perintahnya diatur ke PRINTER_CONTROL_PURGE.

Anggota struktur JOB_INFO_1, JOB_INFO_2, atau JOB_INFO_4 berikut diabaikan pada panggilan ke SetJob: JobId, pPrinterName, pMachineName, pUserName, pDrivername, Size, Submitted, Time, dan TotalPages.

Anda harus memiliki izin akses PRINTER_ACCESS_ADMINISTER untuk pencetak agar bisa mengubah posisi tugas cetak dalam antrean cetak.

Jika Anda tidak ingin mengatur posisi tugas cetak dalam antrean cetak, Anda harus mengatur anggota Posisi struktur JOB_INFO_1, JOB_INFO_2, atau JOB_INFO_4 ke JOB_POSITION_UNSPECIFIED.

Gunakan fungsi SetJob dengan struktur JOB_INFO_3 untuk menautkan satu set pekerjaan cetak (juga dikenal sebagai rantai). Ini berguna dalam situasi di mana satu dokumen terdiri dari beberapa bagian yang ingin Anda render secara terpisah. Untuk mencetak pekerjaan A, B, C, dan D secara berurutan, panggil SetJob dengan JOB_INFO_4 untuk menautkan A ke B, B ke C, dan C ke D.

Jika Anda menautkan pekerjaan cetak, perhatikan hal berikut:

  • Pekerjaan dapat ditambahkan ke awal atau akhir rantai.

  • Semua pekerjaan dalam rantai harus memiliki jenis data yang sama.

  • Rantai harus sepenuhnya ditautkan sebelum penampung dimulai, jika tidak, penampung dapat mencetak dan menghapus pekerjaan yang ditampung sebelum Anda menautkan semuanya. Ada dua cara untuk menjaga rantai tidak mencetak sebelum waktunya:

    • Jeda pekerjaan pertama dalam rantai sampai rantai benar-benar ditautkan. Status jeda pekerjaan pertama mengatur status semua pekerjaan dalam rantai.
    • Jaga agar pekerjaan pertama tidak lengkap, yaitu, jangan panggil EndDoc atau ScheduleJob untuk pekerjaan pertama. Namun, jika 'cetak saat menampung' diaktifkan (default), metode ini memblokir port saat rantai dibangun, yang juga mencegah pencetakan pekerjaan yang tidak terkait.
  • Aplikasi harus menangani kasus di mana pengguna menghapus pekerjaan dalam rantai sebelum rantai selesai mencetak. GetLastError mengembalikan INVALID_PARAMETER ketika JobID tidak ada.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung
Windows 2000 Professional [hanya aplikasi desktop]
Server minimum yang didukung
Windows 2000 Server [hanya aplikasi desktop]
Header
WinSpool.h (termasuk Windows.h)
Pustaka
WinSpool.lib
DLL
WinSpool.drv
Nama Unicode dan ANSI
SetJobW (Unicode) dan SetJobA (ANSI)

Lihat juga

Pencetakan

Cetak Fungsi API Spooler

TambahkanPekerjaan

GetJob

OpenPrinter

SetPrinter

JOB_INFO_1

JOB_INFO_2

JOB_INFO_3

JOB_INFO_4