开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 186|回复: 5
收起左侧

[易语言] 易语言取打印机列队

[复制链接]
结帖率:89% (62/70)
发表于 前天 18:59 | 显示全部楼层 |阅读模式   江苏省镇江市
30精币
易语言可以获取默认打印机列队数量 和 清空打印机列队吗


回答提醒:如果本帖被关闭无法回复,您有更好的答案帮助楼主解决,请发表至 源码区 可获得加分喔。
友情提醒:本版被采纳的主题可在 申请荣誉值 页面申请荣誉值,获得 1点 荣誉值,荣誉值可兑换荣誉会员、终身vip用户组。
快捷通道:申请荣誉值无答案申请取消悬赏投诉有答案未采纳为最佳
结帖率:60% (3/5)

签到天数: 13 天

发表于 前天 20:59 | 显示全部楼层   河南省焦作市
cmd命令,通过获取打印机名称里的队列任务id,取消任务
回复

使用道具 举报

结帖率:60% (3/5)

签到天数: 13 天

发表于 前天 21:14 | 显示全部楼层   河南省焦作市
取消特定打印机的所有任务wmic printer where name="打印机名称" call cancelAllJobs,取消单个任务的你可以修改一下判断条件。现在我电脑上只有封装的打印机模块,模块涉及商用不方便发出来,可以等我明天去公司把取消打印机单个任务的发给你

补充内容 (2025-5-12 21:15):
如果你需要的话
回复

使用道具 举报

结帖率:50% (3/6)

签到天数: 9 天

发表于 前天 21:54 | 显示全部楼层   云南省西双版纳傣族自治州
  
DLL命令名返回值类型公开备 注
OpenPrinter整数型 0
DLL库文件名:
winspool.drv
在DLL库中对应命令名:
OpenPrinterA
参数名类 型传址数组备 注
打印机名称文本型
打印机句柄整数型
打印机信息整数型
DLL命令名返回值类型公开备 注
ClosePrinter整数型 
DLL库文件名:
winspool.drv
在DLL库中对应命令名:
ClosePrinter
参数名类 型传址数组备 注
打印机句柄整数型
DLL命令名返回值类型公开备 注
EnumJobs整数型 0
DLL库文件名:
winspool.drv
在DLL库中对应命令名:
EnumJobsA
参数名类 型传址数组备 注
打印机句柄整数型
起始作业号整数型
作业数量整数型
信息级别整数型
缓冲字节型
缓冲大小整数型
返回大小整数型
DLL命令名返回值类型公开备 注
GetDefaultPrinter整数型 
DLL库文件名:
winspool.drv
在DLL库中对应命令名:
GetDefaultPrinterA
参数名类 型传址数组备 注
打印机名称文本型
大小整数型

子程序名返回值类型公开备 注
获取打印机队列数量整数型 
变量名类 型静态数组备 注
打印机名称文本型
大小整数型 
打印机句柄整数型 
作业数量整数型 
返回大小整数型 
缓冲区字节型
// 获取默认打印机名称
大小 = 256
如果 (GetDefaultPrinter (打印机名称, 大小) = 0)
返回 (0)
结束

// 打开打印机
如果 (OpenPrinter (打印机名称, 打印机句柄, 0) = 0)
返回 (0)
结束

// 先获取需要的缓冲区大小
EnumJobs (打印机句柄, 0, 999, 1, 缓冲区, 0, 返回大小)

// 分配足够的缓冲区
重新定义数组 (缓冲区, 返回大小)

// 枚举作业
如果 (EnumJobs (打印机句柄, 0, 999, 1, 缓冲区, 返回大小, 返回大小) > 0)
// 计算作业数量(每个作业结构大小为48字节)
作业数量 = 返回大小 / 48
否则
作业数量 = 0
结束

// 关闭打印机
ClosePrinter (打印机句柄)

返回 (作业数量)
.子程序结束
DLL命令名返回值类型公开备 注
OpenPrinter整数型 0
DLL库文件名:
winspool.drv
在DLL库中对应命令名:
OpenPrinterA
参数名类 型传址数组备 注
打印机名称文本型
打印机句柄整数型
打印机信息整数型
DLL命令名返回值类型公开备 注
ClosePrinter整数型 
DLL库文件名:
winspool.drv
在DLL库中对应命令名:
ClosePrinter
参数名类 型传址数组备 注
打印机句柄整数型
DLL命令名返回值类型公开备 注
SetPrinter整数型 
DLL库文件名:
winspool.drv
在DLL库中对应命令名:
SetPrinterA
参数名类 型传址数组备 注
打印机句柄整数型
级别整数型
缓冲整数型
标志整数型
DLL命令名返回值类型公开备 注
GetDefaultPrinter整数型 
DLL库文件名:
winspool.drv
在DLL库中对应命令名:
GetDefaultPrinterA
参数名类 型传址数组备 注
打印机名称文本型
大小整数型

子程序名返回值类型公开备 注
清空打印机队列逻辑型 
变量名类 型静态数组备 注
打印机名称文本型
大小整数型 
打印机句柄整数型 
// 获取默认打印机名称
大小 = 256
如果 (GetDefaultPrinter (打印机名称, 大小) = 0)
返回 ()
结束

// 打开打印机
如果 (OpenPrinter (打印机名称, 打印机句柄, 0) = 0)
返回 ()
结束

// 取消所有打印作业
如果 (SetPrinter (打印机句柄, 0, 0, 4) = 0) 则  // 4 表示 PRINTER_CONTROL_PURGE
ClosePrinter (打印机句柄)
返回 ()
结束

// 关闭打印机
ClosePrinter (打印机句柄)

返回 ()
.子程序结束

回复

使用道具 举报

结帖率:89% (39/44)

签到天数: 14 天

发表于 前天 22:25 | 显示全部楼层   河北省衡水市
  
DLL命令名返回值类型公开备 注
GetDefaultPrinterA逻辑型 
DLL库文件名:
winspool.drv
在DLL库中对应命令名:
GetDefaultPrinterA
参数名类 型传址数组备 注
pszBuffer文本型
pcchBuffer整数型
DLL命令名返回值类型公开备 注
OpenPrinterA逻辑型 
DLL库文件名:
winspool.drv
在DLL库中对应命令名:
OpenPrinterA
参数名类 型传址数组备 注
pPrinterName文本型
phPrinter整数型
pDefault整数型
DLL命令名返回值类型公开备 注
EnumJobsA逻辑型 
DLL库文件名:
winspool.drv
在DLL库中对应命令名:
EnumJobsA
参数名类 型传址数组备 注
hPrinter整数型
FirstJob整数型
NoJobs整数型
Level整数型
pJob字节集
cbBuf整数型
pcbNeeded整数型
pcReturned整数型
DLL命令名返回值类型公开备 注
SetJobA逻辑型 
DLL库文件名:
winspool.drv
在DLL库中对应命令名:
SetJobA
参数名类 型传址数组备 注
hPrinter整数型
JobId整数型
Level整数型
pJob整数型
Command整数型
DLL命令名返回值类型公开备 注
ClosePrinter逻辑型 
DLL库文件名:
winspool.drv
在DLL库中对应命令名:
ClosePrinter
参数名类 型传址数组备 注
hPrinter整数型
常量名称常量值公 开备 注
JOB_CONTROL_DELETE1 
JOB_INFO_LEVEL1 

子程序名返回值类型公开备 注
获取打印机队列数量整数型 
变量名类 型静态数组备 注
hPrinter整数型 
打印机名称文本型 
缓冲区大小整数型 
作业数量整数型 
缓冲区字节集 
所需大小整数型 
实际返回数整数型 
' 获取默认打印机名称
打印机名称 = 取空白文本 (256)
缓冲区大小 = 256
如果真 (GetDefaultPrinterA (打印机名称, 缓冲区大小))
返回 (-1)

' 打开打印机
如果真 (OpenPrinterA (打印机名称, hPrinter, 0))
返回 (-2)

' 获取所需缓冲区大小
EnumJobsA (hPrinter, 0, -1, JOB_INFO_LEVEL, {}, 0, 所需大小, 实际返回数)
如果真 (所需大小 = 0)
ClosePrinter (hPrinter)
返回 (0)  ' 无作业

' 分配缓冲区并枚举作业
缓冲区 = 取空白字节集 (所需大小)
如果真 (EnumJobsA (hPrinter, 0, -1, JOB_INFO_LEVEL, 缓冲区, 所需大小, 所需大小, 实际返回数))
作业数量 = 实际返回数
作业数量 = -3

ClosePrinter (hPrinter)
返回 (作业数量)
子程序名返回值类型公开备 注
清空打印机队列逻辑型 
变量名类 型静态数组备 注
hPrinter整数型 
打印机名称文本型 
缓冲区大小整数型 
i整数型 
作业ID整数型 
打印机名称 = 取空白文本 (256)
缓冲区大小 = 256
如果真 (GetDefaultPrinterA (打印机名称, 缓冲区大小))
返回 ()

如果真 (OpenPrinterA (打印机名称, hPrinter, 0))
返回 ()

' 遍历所有作业删除
计次循环首 (100, i)  ' 最多处理100个作业避免死循环
作业ID = i - 1
如果真 (SetJobA (hPrinter, 作业ID, 0, 0, JOB_CONTROL_DELETE))
输出调试文本 (“已删除作业ID:”, 作业ID)

计次循环尾 ()
ClosePrinter (hPrinter)
返回 ()
子程序名返回值类型公开备 注
__启动窗口_创建完毕  
变量名类 型静态数组备 注
队列数量整数型 
队列数量 = 获取打印机队列数量 ()
判断 (队列数量 > 0)
调试输出 (“当前队列数量:”, 队列数量)
如果 (清空打印机队列 ())
信息框 (“队列已清空”, 0, , )
信息框 (“清空失败”, 0, , )
判断 (队列数量 = 0)
信息框 (“打印队列为空”, 0, , )
信息框 (“获取失败,错误代码:”到文本 (队列数量), 0, , )


i支持库列表   支持库注释   
spec特殊功能支持库

回复

使用道具 举报

结帖率:96% (410/429)

签到天数: 9 天

发表于 昨天 07:54 | 显示全部楼层   内蒙古自治区乌海市
谢谢分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表