我不能用python win32prin删除打印作业

2024-10-04 07:27:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我将python3与win32print一起使用,如下代码。它应该删除所有打印作业,因为TotalPages>;=1。我认为所有的数据类型都是正确的。在

import time
import win32print

#----------------------------------------------------------------------
def print_job_checker():
    """
    Prints out all jobs in the print queue every 5 seconds
    """
    jobs = [1]
    while jobs:
        jobs = []
        for p in win32print.EnumPrinters(win32print.PRINTER_ENUM_LOCAL,
                                         None, 1):
            flags, desc, name, comment = p

            phandle = win32print.OpenPrinter(name)

            print_jobs = win32print.EnumJobs(phandle, 0, -1, 1)

            if print_jobs:
                jobs.extend(list(print_jobs))

            for job in print_jobs:

                print(job['TotalPages'])

                if(job['TotalPages'] >= 1):
                    print(type(job))
                    win32print.SetJob(phandle, job['JobId'], 1, job, win32print.JOB_CONTROL_DELETE)

            win32print.ClosePrinter(phandle)

        time.sleep(0.25)
    print ("No more jobs!")


#----------------------------------------------------------------------
if __name__ == "__main__":
    while True:
        print_job_checker()

当我运行它显示这样的错误。在

File "C:/Users/test_printer.py", line 37, in print_job_checker win32print.SetJob(phandle, job['JobId'], 1, job, win32print.JOB_CONTROL_DELETE)

error: (1804, 'SetJob', 'The specified datatype is invalid.')


Tags: nameinimportforiftimejobschecker
1条回答
网友
1楼 · 发布于 2024-10-04 07:27:27

既然你是在删除而不是改变工作属性,那么试试这个

win32print.SetJob(phandle, job['JobId'], 0, None, win32print.JOB_CONTROL_DELETE)

以下参数已更改:

级别=0

pPrinter=无

相关问题 更多 >