精易论坛

标题: 易语言取打印机列队 [打印本页]

作者: lanye    时间: 2025-5-12 18:59
标题: 易语言取打印机列队
易语言可以获取默认打印机列队数量 和 清空打印机列队吗

作者: haoren1212    时间: 2025-5-12 20:59
cmd命令,通过获取打印机名称里的队列任务id,取消任务
作者: haoren1212    时间: 2025-5-12 21:14
取消特定打印机的所有任务wmic printer where name="打印机名称" call cancelAllJobs,取消单个任务的你可以修改一下判断条件。现在我电脑上只有封装的打印机模块,模块涉及商用不方便发出来,可以等我明天去公司把取消打印机单个任务的发给你

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

作者: lxh1230    时间: 2025-5-12 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 (打印机句柄)

返回 ()
.子程序结束


作者: 你的猫    时间: 2025-5-12 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特殊功能支持库


作者: wh1234567    时间: 2025-5-13 07:54
谢谢分享
作者: 5317689    时间: 2025-6-12 21:31

谢谢分享
谢谢分享
谢谢分享
谢谢分享
谢谢分享




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4