描述
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]处理感兴趣的打印机对象。使用OpenPrinter,OpenPrinter2或AddPrinter功能来检索打印机句柄。
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]指向设置打印作业参数的结构的指针。
所有版本的Windows:pJob可以指向JOB_INFO_1或JOB_INFO_2结构。
Windows NT,Windows 2000,Windows XP,Windows Vista:pJob也可以指向JOB_INFO_3结构。您必须对JOB_INFO_3结构的JobId和NextJobId成员指定的作业具有JOB_ACCESS_ADMINISTER访问权限。
Windows Vista:pJob也可以指向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_2,JOB_INFO_3或JOB_INFO_4结构的指针来设置各种打印作业参数。
Windows 95,Windows 98,Windows Me:使用该函数设置打印作业参数时,必须将命令参数设置为0。
要删除或删除特定打印机的所有打印作业,请调用SetPrinter函数,其命令参数设置为PRINTER_CONTROL_PURGE。
以下JOB_INFO_1,JOB_INFO_2或JOB_INFO_4结构的成员在SetJob:JobId,pPrinterName,pMachineName,pUserName,pDrivername,尺寸,提交,时间和TotalPages.
打印机必须具有PRINTER_ACCESS_ADMINISTER访问权限才能更改打印队列中打印作业的位置。
如果您不想在打印队列中设置打印作业的位置,则应将JOB_INFO_1JOB_INFO_2或JOB_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.
如果您链接打印作业,请注意以下事项:
· | 作业可以添加到链的开始或结尾。 |
· | 链中的所有作业必须具有相同的数据类型。 |
· | 在假脱机开始之前,链条必须完全链接,否则假脱机程序可能会在连接所有链接之前打印和删除假脱机作业。有两种方式可以保持链条过早打印: |
· | 暂停链中的第一份工作,直到链条完全关联。第一个工作的暂停状态控制链中所有作业的状态。 |
· | 保持第一份工作不完整,也就是不要打电话给EndDoc或ScheduleJob.但是,如果启用了打印(假脱机打印)(默认情况下),则该方法在链构建时阻止端口,这也可以防止打印非相关作业。 |
· | 应用程序必须处理用户在链完成打印之前删除链中的作业的情况。当JobID不存在时,GetLastError返回INVALID_PARAMETER。 |
Windows 95,Windows 98,Windows Me:Microsoft Layer for Unicode支持SetJobW.
引用文件 #INCLUDE Once
WinSpool.inc