精易论坛

标题: 取当前系统打印机上还有几份文档没有打印完成? [打印本页]

作者: yangyao    时间: 2025-1-25 08:13
标题: 取当前系统打印机上还有几份文档没有打印完成?
取当前系统打印机上还有几份文档没有打印完成? 如何写?

作者: FUYUEPC    时间: 2025-1-25 08:59
[PowerShell] 纯文本查看 复制代码
# 获取默认打印机的打印队列
$printer = Get-WmiObject -Query "SELECT * FROM Win32_Printer WHERE Default=$true"
$jobs = Get-WmiObject -Query "SELECT * FROM Win32_PrintJob WHERE Name LIKE '%$($printer.Name)%'"

# 输出未完成打印的文档数量
$jobCount = $jobs.Count
Write-Host "当前打印机上还有 $jobCount 份文档没有打印完成。"

作者: FUYUEPC    时间: 2025-1-25 09:02
  
DLL 调用 WIN32API
.子程序 EnumJobs, 整数型, "Winspool.drv", "EnumJobs", 公开
DLL命令名返回值类型公开备 注
(暂未填写DLL命令名)   
DLL库文件名:
(未填写库文件名)
在DLL库中对应命令名:
(未填写命令名)
参数名类 型传址数组备 注
hPrinter整数型
FirstJob整数型
NoJobs整数型
Level整数型
pJob整数型
cbBuf整数型
pcbNeeded整数型
pcReturned整数型

子程序名返回值类型公开备 注
获取打印队列中的任务数量整数型 
.局部变量 打印机句柄, 整数型
.局部变量 打印队列数量, 整数型
.局部变量 返回值, 整数型
调用 API 打开打印机 ("Winspool.drv", "OpenPrinterA"), 打印机句柄
如果 (打印机句柄 > 0)
调用 EnumJobs (打印机句柄, 0, 0, 1, 0, 0, 返回值, 打印队列数量)
调用 API 关闭打印机 (打印机句柄)
返回 (打印队列数量)


i支持库列表   支持库注释   
shell32(未知支持库)
user32(未知支持库)


作者: FUYUEPC    时间: 2025-1-25 09:03
[Python] 纯文本查看 复制代码
import win32print

def get_pending_print_jobs():
    printer_name = win32print.GetDefaultPrinter()
    printer_handle = win32print.OpenPrinter(printer_name)
    try:
        print_jobs = win32print.EnumJobs(printer_handle, 0, -1, 1)
        return len(print_jobs)
    finally:
        win32print.ClosePrinter(printer_handle)

if __name__ == "__main__":
    print(f"当前打印队列中未完成的文档数量: {get_pending_print_jobs()}")


作者: yangyao    时间: 2025-1-25 13:41
FUYUEPC 发表于 2025-1-25 09:02
[e=0].版本 2
.支持库 shell32
.支持库 user32

(暂未填写DLL命令名)         (未填写命令名)  这里面是什么内容?
作者: qq977352880    时间: 2025-1-25 18:30
关注一下,期待更多讨论。

作者: chenyucheng    时间: 2025-1-25 21:19
yangyao 发表于 2025-1-25 13:41
(暂未填写DLL命令名)         (未填写命令名)  这里面是什么内容?

他写错了。
  
' DLL 调用 WIN32API
.DLL命令 EnumJobs, 整数型, "Winspool.drv", "EnumJobs", 公开
DLL命令名返回值类型公开备 注
(暂未填写DLL命令名)   
DLL库文件名:
(未填写库文件名)
在DLL库中对应命令名:
(未填写命令名)
参数名类 型传址数组备 注
hPrinter整数型
FirstJob整数型
NoJobs整数型
Level整数型
pJob整数型
cbBuf整数型
pcbNeeded整数型
pcReturned整数型

子程序名返回值类型公开备 注
获取打印队列中的任务数量整数型 
.局部变量 打印机句柄, 整数型
.局部变量 打印队列数量, 整数型
.局部变量 返回值, 整数型
调用 API 打开打印机 ("Winspool.drv", "OpenPrinterA"), 打印机句柄
如果 (打印机句柄 > 0)
调用 EnumJobs (打印机句柄, 0, 0, 1, 0, 0, 返回值, 打印队列数量)
调用 API 关闭打印机 (打印机句柄)
返回 (打印队列数量)


i支持库列表   支持库注释   
shell32(未知支持库)
user32(未知支持库)


作者: chenyucheng    时间: 2025-1-25 21:32
yangyao 发表于 2025-1-25 13:41
(暂未填写DLL命令名)         (未填写命令名)  这里面是什么内容?

错了,再改一下。他这个代码本来就有错误。
  
.版本 2.支持库 shell
DLL命令名返回值类型公开备 注
EnumJobs整数型 
DLL库文件名:
Winspool.drv
在DLL库中对应命令名:
EnumJobs
参数名类 型传址数组备 注
hPrinter整数型
FirstJob整数型
NoJobs整数型
Level整数型
pJob整数型
cbBuf整数型
pcbNeeded整数型
pcReturned整数型

子程序名返回值类型公开备 注
获取打印队列中的任务数量整数型 
变量名类 型静态数组备 注
打印机句柄整数型 
打印队列数量整数型 
返回值整数型 
打开打印机 (“Winspool.drv”, “OpenPrinterA”, 打印机句柄)
如果真 (打印机句柄 > 0)
EnumJobs (打印机句柄, 0, 0, 1, 0, 0, 返回值, 打印队列数量)
关闭打印机 (打印机句柄)
返回 (打印队列数量)


作者: 编程阿狸    时间: 2025-1-28 01:02
# 获取默认打印机的打印队列
$printer = Get-WmiObject -Query "SELECT * FROM Win32_Printer WHERE Default=$true"
$jobs = Get-WmiObject -Query "SELECT * FROM Win32_PrintJob WHERE Name LIKE '%$($printer.Name)%'"

# 输出未完成打印的文档数量
$jobCount = $jobs.Count
Write-Host "当前打印机上还有 $jobCount 份文档没有打印完成。"




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