现在,我正在使用win32print
枚举打印机和作业列表,并获得作业状态。
for printStats in printers:
handle = win32print.OpenPrinter(printStats[2])
queued = win32print.EnumJobs(handle, 0, -1, 1)
for printJob in queued:
username = printJob['pUserName']
computer = printJob['pMachineName']
document = printJob['pDocument']
identity = printJob['JobId']
# get the detailed status description of the current print
jobstate = win32print.GetJob(handle, identity, 2)['Status']
由于某种原因,在无限while
循环中,程序会抛出有关获取作业状态的错误。
Traceback (most recent call last):
File "C:\Users\Malik\Desktop\Stem\2.0\adding.py", line 53, in <module>
jobstate = win32print.GetJob(handle, identity, 2)['Status']
error: (87, 'GetJob', 'The parameter is incorrect.')
有关为何发生这种情况的任何想法?如何修复此错误以获取打印作业的状态?
答案 0 :(得分:0)
我最近试图确定这个错误的原因。软件响应打印机队列中的更改,为找到的所有作业调用GetJob。在不详细讨论这个过程的情况下,我可以说我观察错误的原因是因为当GetJob被调用某些作业时,它们已被打印并从队列中删除。也就是说,为不存在的作业调用GetJob将导致&#34;参数不正确&#34;错误,大概是因为参数(作业ID)不正确。我认为微软本可以返回更具体的错误,并为很多人节省了大量时间。当然,你的情况可能会有所不同。