勇芳软件工作室.汉化:  Printing > Print Spooler API > Print Spooler API Reference > Print Spooler API Functions >

SetJob

Previous pageReturn to chapter overviewNext page

描述

 

SetJob功能在指定的打印机上暂停,恢复,取消或重新启动打印作业。您还可以使用SetJob功能来设置打印作业参数,例如打印作业优先级和文档名称。

 

Windows 95,Windows 98,Windows Me:您可以使用SetJob功能为打印作业提供命令,或设置打印作业参数,但不能在同一个调用中同时进行。因此,当命令参数不为零时,该函数将忽略水平pJob参数。要设置打印作业参数,必须将命令设置为0。

 

Windows NT,Windows 2000,Windows XP,Windows Vista:您可以使用SetJob功能为打印作业提供命令,或设置打印作业参数,或同时调用两者。命令参数的值不影响函数使用Level和pJob参数。此外,您可以使用SetJobJOB_INFO_3将一组打印作业链接在一起。有关详细信息,请参阅备注。

 

C++ 语法

 

BOOL SetJob(

__in HANDLE hPrinter,

__in DWORD JobId,

__in DWORD Level,

__in LPBYTE pJob,

__in DWORD Command

);

 

PowerBASIC 语法

 

FUNCTION SetJobA ( _

BYVAL hPrinter AS DWORD, _

BYVAL JobId AS DWORD, _

BYVAL Level AS DWORD, _

BYVAL pJob AS DWORD, _

BYVAL Command AS DWORD _

) AS LONG

 

Unicode版本:

 

FUNCTION SetJobW ( _

BYVAL hPrinter AS DWORD, _

BYVAL JobId AS DWORD, _

BYVAL Level AS DWORD, _

BYVAL pJob AS DWORD, _

BYVAL Command AS DWORD _

) AS LONG

 

参数

 

hPrinter

 

[in]处理感兴趣的打印机对象。使用OpenPrinterOpenPrinter2AddPrinter功能来检索打印机句柄。

 

JobId

 

[in]指定打印作业的标识符。通过调用AddJob函数或StartDoc函数获取打印作业标识符。

 

Windows NT,Windows 2000,Windows XP,Windows Vista:如果水平参数设置为3,则JobId参数必须与pJob指向的JOB_INFO_3结构的JOB_INFO_3成员匹配。

 

Level

 

[in]指定pJob参数指向的作业信息结构的类型。

 

所有版本的Windows:您可以将水平参数设置为0,1或2。将水平设置为0时,pJob应为NULL。当您不设置任何打印作业参数时,请使用这些值。

 

Windows NT,Windows 2000,Windows XP,Windows Vista:您还可以将水平参数设置为3。

 

Windows Vista:您也可以将水平参数设置为4。

 

Windows 95,Windows 98,Windows Me:仅当命令参数为0时,该函数才注意此参数。如果命令非零,则该函数忽略此参数和pJob参数。

 

pJob

 

[in]指向设置打印作业参数的结构的指针。

 

所有版本的WindowspJob可以指向JOB_INFO_1JOB_INFO_2结构。

 

Windows NT,Windows 2000,Windows XP,Windows VistapJob也可以指向JOB_INFO_3结构。您必须对JOB_INFO_3结构的JobIdNextJobId成员指定的作业具有JOB_ACCESS_ADMINISTER访问权限。

 

Windows VistapJob也可以指向JOB_INFO_4结构。

 

如果水平参数为0,则pJob应为NULL。

 

Windows 95,Windows 98,Windows Me:仅当命令参数为0时,该参数仅注意此参数。如果命令非零,则该函数忽略此参数和水平参数。

 

Command

 

[in]指定要执行的打印作业操作。此参数可以是以下值之一。

 

JOB_CONTROL_CANCEL

 

Windows 95,Windows 98,Windows Me,Windows NT 3.51及更早版本:删除打印作业。

 

Windows NT 4.0及更高版本:不要使用。要删除打印作业,请使用JOB_CONTROL_DELETE。

 

JOB_CONTROL_PAUSE

 

暂停打印作业。

 

JOB_CONTROL_RESTART

 

重新启动打印作业。只有打印作业才能重新启动。

 

JOB_CONTROL_RESUME

 

恢复暂停的打印作业。

 

JOB_CONTROL_DELETE

 

Windows NT 4.0及更高版本:删除打印作业。

 

JOB_CONTROL_SENT_TO_PRINTER

 

Windows NT 4.0及更高版本:端口监视器用于结束打印作业。

 

JOB_CONTROL_LAST_PAGE_EJECTED

 

Windows NT 4.0及更高版本:由语言监视器用于结束打印作业。

 

JOB_CONTROL_RETAIN

 

Windows Vista及更高版本:打印后将作业保留在队列中。

 

JOB_CONTROL_RELEASE

 

Windows Vista及更高版本:释放打印作业。

 

Windows 95,Windows 98,Windows Me:如果使用SetJob功能设置打印作业参数,则必须将命令参数设置为0。

 

Windows NT,Windows 2000,Windows XP,Windows Vista:您可以使用与SetJob功能相同的调用来设置打印作业参数并给出打印作业的命令。因此,如果您正在设置打印作业参数,命令不需要为0,尽管它可以。

 

返回值

 

如果函数成功,则返回值为非零值。

 

如果函数失败,返回值为零。

 

备注

 

您可以使用SetJob功能通过提供指向包含必要数据的JOB_INFO_1JOB_INFO_2JOB_INFO_3JOB_INFO_4结构的指针来设置各种打印作业参数。

 

Windows 95,Windows 98,Windows Me:使用该函数设置打印作业参数时,必须将命令参数设置为0。

 

要删除或删除特定打印机的所有打印作业,请调用SetPrinter函数,其命令参数设置为PRINTER_CONTROL_PURGE。

 

以下JOB_INFO_1JOB_INFO_2JOB_INFO_4结构的成员在SetJobJobIdpPrinterNamepMachineNamepUserNamepDrivername尺寸提交时间TotalPages.

 

打印机必须具有PRINTER_ACCESS_ADMINISTER访问权限才能更改打印队列中打印作业的位置。

 

如果您不想在打印队列中设置打印作业的位置,则应将JOB_INFO_1JOB_INFO_2JOB_INFO_4结构的Position成员设置为JOB_POSITION_UNSPECIFIED。

 

Windows NT,Windows 2000,Windows XP,Windows Vista:使用JOB_INFO_3结构的SetJob功能将一组打印作业(也称为链)组合在一起。在单个文档由您要单独呈现的几个部分组成的情况下,这是非常有用的。要按顺序打印作业A,B,C和D,请使用JOB_INFO_4调用SetJob将A链接到B,将B链接到C,将C链接到D.

 

如果您链接打印作业,请注意以下事项:

 

·作业可以添加到链的开始或结尾。
·链中的所有作业必须具有相同的数据类型。
·在假脱机开始之前,链条必须完全链接,否则假脱机程序可能会在连接所有链接之前打印和删除假脱机作业。有两种方式可以保持链条过早打印:
·暂停链中的第一份工作,直到链条完全关联。第一个工作的暂停状态控制链中所有作业的状态。
·保持第一份工作不完整,也就是不要打电话给EndDocScheduleJob.但是,如果启用了打印(假脱机打印)(默认情况下),则该方法在链构建时阻止端口,这也可以防止打印非相关作业。
·应用程序必须处理用户在链完成打印之前删除链中的作业的情况。当JobID不存在时,GetLastError返回INVALID_PARAMETER。

 

Windows 95,Windows 98,Windows Me:Microsoft Layer for Unicode支持SetJobW.

 

引用文件 #INCLUDE Once

 

WinSpool.inc