我想使用 Python 清除或删除打印作业。
但我怎样才能得到JobID
?
win32print.SetJob(hPrinter, JobID , Level , JobInfo , Command)
我怎样才能运行这段代码?
jobs = []
for p in win32print.EnumPrinters(win32print.PRINTER_ENUM_LOCAL,None, 1):
flags, desc, name, comment = p
pHandle = win32print.OpenPrinter(name)
print = list(win32print.EnumJobs(pHandle, 0, -1, 1))
jobs.extend(print)
SetJob(pHandle, id, 1,JOB_CONTROL_DELETE)
#where should i get id from?
win32print.ClosePrinter(pHandle)
从您的代码开始,我成功创建了一个小脚本,可以删除任何(本地)打印机上的任何打印作业(我已经测试过它并且它works).
这是它(我已经运行它Python 3.5):
代码00.py:
#!/usr/bin/env python
import sys
import win32print as wprn
def main(*argv):
enum_flags = wprn.PRINTER_ENUM_LOCAL #| wprn.PRINTER_ENUM_SHARED
printer_name = None
printer_info_level = 1
for printer_info in wprn.EnumPrinters(enum_flags, printer_name, printer_info_level):
name = printer_info[2]
#print(printer_info)
printer_handle = wprn.OpenPrinter(name)
job_info_level = 1
job_info_tuple = wprn.EnumJobs(printer_handle, 0, -1, job_info_level)
#print(type(job_info_tuple), len(job_info_tuple))
for job_info in job_info_tuple:
#print("\t", type(job_info), job_info, dir(job_info))
wprn.SetJob(printer_handle, job_info["JobId"], job_info_level, job_info, wprn.JOB_CONTROL_DELETE)
wprn.ClosePrinter(printer_handle)
if __name__ == "__main__":
print("Python {:s} {:03d}bit on {:s}\n".format(" ".join(elem.strip() for elem in sys.version.split("\n")),
64 if sys.maxsize > 0x100000000 else 32, sys.platform))
rc = main(*sys.argv[1:])
print("\nDone.")
sys.exit(rc)
Notes:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)