打印状态错误

时间:2016-02-11 10:24:24

标签: python printing pywin32

现在,我正在使用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.')

有关为何发生这种情况的任何想法?如何修复此错误以获取打印作业的状态?

1 个答案:

答案 0 :(得分:0)

我最近试图确定这个错误的原因。软件响应打印机队列中的更改,为找到的所有作业调用GetJob。在不详细讨论这个过程的情况下,我可以说我观察错误的原因是因为当GetJob被调用某些作业时,它们已被打印并从队列中删除。也就是说,为不存在的作业调用GetJob将导致&#34;参数不正确&#34;错误,大概是因为参数(作业ID)不正确。我认为微软本可以返回更具体的错误,并为很多人节省了大量时间。当然,你的情况可能会有所不同。