如何在 win32print 中使用 SetJob?

2023-12-04

我想使用 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:

  • 我在评论中所说的(关于迭代打印机)仍然有效,但我认为这超出了这个问题的范围

  • 我对脚本做了一些改进:

    • 为变量提供(更多)有意义的名称

    • 使用变量而不是普通数字来提高代码可读性

    • 其他小修正

    • 也许,它可以使用一些异常处理

  • 该脚本的秘密包括:

    • EnumJobs返回一个tuple字典(每个字典包含一个[MS.Docs]:JOB_INFO_1 结构 - for job_info_level = 1),或者(显然)如果打印机没有排队作业,则为空元组
  • 信息如何来自EnumJobs被传递给SetJob:

    • The JobID论点(你问的)是job_info["JobId"](检查上一个项目符号)

    • 另请注意接下来的两个参数:Level and JobInfo

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 win32print 中使用 SetJob? 的相关文章

随机推荐

  • 在 Python 中使用 Rasterbar libtorrent 挑选同级

    有谁知道是否可以选择使用 libtorrent 进行连接的对等点 也就是说 在跟踪器返回对等 IP 和端口的列表后 只有选定的几个将根据某些定义的标准进行连接 Thanks 您可以使用以下命令从集合中删除对等点set ip filter 您
  • 使用 Liquibase 和 JPA 实体生成变更日志

    我想将 liquibase 引入我的项目 首先我想根据我的休眠实体生成一个变更日志文件 到目前为止我所拥有的 应用程序属性 HIBERNATE Write out schema into sql script spring jpa prop
  • 如何检测是否有前置摄像头,如果有如何到达并使用前置摄像头?

    如何检测是否有前置摄像头以及如果有如何到达并使用前置摄像头 如果您使用的是 API 级别 9 Android 2 3 或更高版本 您可以执行以下操作来计算 第一个 前置摄像头的索引 int getFrontCameraId CameraIn
  • 使用C对位图进行模糊效果

    我正在编写在 mp4 上应用模糊滤镜的程序 我正在使用 ffmpeg 从 mp4 中提取 bmp 文件 但模糊结果是错误的 图片的某些部分已正确模糊 但其他部分的颜色错误 原始图像https i stack imgur com q5A6v
  • ClearCase 快照视图未更新

    我是第一次使用 ClearCase 在理解快照视图时遇到了一些困难 我有配置规范的视图 element CHECKEDOUT element main dev LATEST load project dir1 load project di
  • Lua:减去十进制数不会返回正确的精度

    我使用的是Lua 5 1 print 10 08 10 07 上面不是打印 0 01 而是打印 0 0099999999999998 知道如何通过这个减法得到 0 01 吗 减法得到 0 01 它只是重复小数的形式 精度略有损失 Lua使用
  • urllib2 和 httplib 线程安全吗?

    我正在寻找有关线程安全的信息urllib2 and httplib 官方文档 http docs python org library urllib2 html and http docs python org library httpli
  • 奏鸣曲和单页

    我是奏鸣曲的新手 我有一个带有实体等的 ContentTestAdmin 它只能包含 4 条记录 记录1 记录2 记录3 记录4 我已经禁用了创建和删除功能 public function configureRoutes RouteColl
  • SQL 填充缺失日期

    我认为这是一个常见的数据仓库问题 我一直在尝试做的是创建一个日期之间没有间隙的 SQL 查询 事实表只记录被测量并记录到表中的记录 本案涉及海上船舶的注册石油生产 有时 某些船上没有任何作品 这是我的简单数据仓库 DimVessel Dim
  • 在 UITextView 上以编程方式禁用 iOS8 Quicktype 键盘

    我正在尝试更新 iOS8 的应用程序 该应用程序具有聊天界面 但新的 Quicktype 键盘隐藏了文本视图 因此我想以编程方式或在界面生成器中将其关闭 是否有可能以某种方式或只有用户可以在设备设置中将其关闭 我知道有一个问题 答案可以解决
  • CodeIgniter 空白页

    这里是n00b 在搜索论坛后 我还没有遇到这个问题 因为我正在经历它 我有一个 CI 站点 直到大约三天前都工作正常 我的问题如下 单击按钮时 页面正确加载 按 Enter 键 CI 死亡空白页加载 例如 当我登录时 在登录过程运行后 它必
  • 在 servlet 外部访问 ServletContext

    我想知道是否有人可以就 Java webapp 问题提供建议 我有一个设置的标准 Java 类 它具有设置和获取属性文件值的方法 这些方法在系统范围内使用 并由 servlet 和非 servlet 类方法等调用 但我想做的是使用 Serv
  • 在 Ubuntu 上重置 mysql root 密码

    如果我有 root 访问权限并且很快关闭数据库不是问题 有没有一种简单的方法可以在 Ubuntu 上设置 mysql root 密码 如果您没有很多表 这应该在 10 秒内运行 pass MyNewPass echo ALTER USER
  • jqPlot 步骤图不按系列顺序绘制

    我需要使用 jQPlot 构建步骤图 我的 X 轴是日期 时间 Y 轴是数字 做这个原型一切都运行良好 Scripts jqplot jquery jqplot min css rel stylesheet media screen gt
  • 如何将基数 10 转换为基数 X? [复制]

    这个问题在这里已经有答案了 我想编写一个程序 要求用户输入一个以 10 为基数的数字 并输入他们想要转换成的基数 在不让我的程序变得极其复杂的情况下 我可以转换到的最高基数是多少 我正在考虑基数 9 因为在 10 已经给出 之后 基数开始使
  • 指向子类的指针上的删除是否会调用基类析构函数?

    我有一个class A它对其字段之一使用堆内存分配 类 A 被实例化并作为指针字段存储在另一个类中 class B 当我完成 B 类的对象后 我调用delete 我认为它调用了析构函数 但这也调用了 A 类的析构函数吗 Edit 从答案中
  • 从异步函数获取当前方法名称?

    无论如何可以从异步函数内部获取当前方法名称吗 我试过了 System Reflection MethodInfo GetCurrentMethod 我尝试使用 StackTrace 和 StrackFrame 如下 StackTrace s
  • 谷歌脚本,下载带有用户输入的文件

    我编写了以下 Google Apps 脚本 该脚本记录文件名并生成文件的直接下载链接 到目前为止 它工作得很好 function SearchFiles var searchFor title contains Letter var nam
  • org.hsqldb.HsqlException:用户缺乏权限或未找到对象:DATABASECHANGELOGLOCK

    怎么会发生这种事呢 liquibase 不是应该为自己创建这个表吗 这是为单元测试创 建的内存数据库 public void setUp String contexts try ResourceAccessor resourceAccess
  • 如何在 win32print 中使用 SetJob?

    我想使用 Python 清除或删除打印作业 但我怎样才能得到JobID win32print SetJob hPrinter JobID Level JobInfo Command 我怎样才能运行这段代码 jobs for p in win