|
OpenPrinter | 整数型 | |
|
winspool.drv |
|
OpenPrinterA |
|
打印机名称 | 文本型 | | |
打印机句柄 | 整数型 | | |
打印机信息 | 整数型 | | |
|
ClosePrinter | 整数型 | |
|
winspool.drv |
|
ClosePrinter |
|
打印机句柄 | 整数型 | | |
|
EnumJobs | 整数型 | |
|
winspool.drv |
|
EnumJobsA |
|
打印机句柄 | 整数型 | | |
起始作业号 | 整数型 | | |
作业数量 | 整数型 | | |
信息级别 | 整数型 | | |
缓冲 | 字节型 | | |
缓冲大小 | 整数型 | | |
返回大小 | 整数型 | | |
|
GetDefaultPrinter | 整数型 | |
|
winspool.drv |
|
GetDefaultPrinterA |
|
打印机名称 | 文本型 | | |
大小 | 整数型 | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 |
打印机名称 | 文本型 | | |
大小 | 整数型 | | |
打印机句柄 | 整数型 | | |
作业数量 | 整数型 | | |
返回大小 | 整数型 | | |
缓冲区 | 字节型 | | |
// 获取默认打印机名称
大小 = 256
如果 (GetDefaultPrinter (打印机名称, 大小
) = 0
) 则
返回 (0
)结束
// 打开打印机
如果 (OpenPrinter (打印机名称, 打印机句柄, 0
) = 0
) 则
返回 (0
)结束
// 先获取需要的缓冲区大小
EnumJobs (打印机句柄, 0, 999, 1, 缓冲区, 0, 返回大小
)// 分配足够的缓冲区
重新定义数组 (缓冲区, 返回大小
)// 枚举作业
如果 (EnumJobs (打印机句柄, 0, 999, 1, 缓冲区, 返回大小, 返回大小
) > 0
) 则
// 计算作业数量(每个作业结构大小为48字节)
作业数量 = 返回大小 / 48
否则
作业数量 = 0
结束
// 关闭打印机
ClosePrinter (打印机句柄
)返回 (作业数量
).子程序结束
|
OpenPrinter | 整数型 | |
|
winspool.drv |
|
OpenPrinterA |
|
打印机名称 | 文本型 | | |
打印机句柄 | 整数型 | | |
打印机信息 | 整数型 | | |
|
ClosePrinter | 整数型 | |
|
winspool.drv |
|
ClosePrinter |
|
打印机句柄 | 整数型 | | |
|
SetPrinter | 整数型 | |
|
winspool.drv |
|
SetPrinterA |
|
打印机句柄 | 整数型 | | |
级别 | 整数型 | | |
缓冲 | 整数型 | | |
标志 | 整数型 | | |
|
GetDefaultPrinter | 整数型 | |
|
winspool.drv |
|
GetDefaultPrinterA |
|
打印机名称 | 文本型 | | |
大小 | 整数型 | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 |
打印机名称 | 文本型 | | |
大小 | 整数型 | | |
打印机句柄 | 整数型 | | |
// 获取默认打印机名称
大小 = 256
如果 (GetDefaultPrinter (打印机名称, 大小
) = 0
) 则
返回 (假)结束
// 打开打印机
如果 (OpenPrinter (打印机名称, 打印机句柄, 0
) = 0
) 则
返回 (假)结束
// 取消所有打印作业
如果 (SetPrinter (打印机句柄, 0, 0, 4
) = 0
) 则 // 4 表示 PRINTER_CONTROL_PURGE
ClosePrinter (打印机句柄
)返回 (假)结束
// 关闭打印机
ClosePrinter (打印机句柄
)返回 (真).子程序结束
|
GetDefaultPrinterA | 逻辑型 | |
|
winspool.drv |
|
GetDefaultPrinterA |
|
pszBuffer | 文本型 | | |
pcchBuffer | 整数型 | | |
|
OpenPrinterA | 逻辑型 | |
|
winspool.drv |
|
OpenPrinterA |
|
pPrinterName | 文本型 | | |
phPrinter | 整数型 | | |
pDefault | 整数型 | | |
|
EnumJobsA | 逻辑型 | |
|
winspool.drv |
|
EnumJobsA |
|
hPrinter | 整数型 | | |
FirstJob | 整数型 | | |
NoJobs | 整数型 | | |
Level | 整数型 | | |
pJob | 字节集 | | |
cbBuf | 整数型 | | |
pcbNeeded | 整数型 | | |
pcReturned | 整数型 | | |
|
SetJobA | 逻辑型 | |
|
winspool.drv |
|
SetJobA |
|
hPrinter | 整数型 | | |
JobId | 整数型 | | |
Level | 整数型 | | |
pJob | 整数型 | | |
Command | 整数型 | | |
|
ClosePrinter | 逻辑型 | |
|
winspool.drv |
|
ClosePrinter |
|
hPrinter | 整数型 | | |
|
JOB_CONTROL_DELETE | 1 | |
JOB_INFO_LEVEL | 1 | |
变量名 | 类 型 | 静态 | 数组 | 备 注 |
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
) 
作业ID = i - 1

如果真 (SetJobA (hPrinter, 作业ID, 0, 0, JOB_CONTROL_DELETE
))

输出调试文本 (“已删除作业ID:”, 作业ID
)
计次循环尾 ()ClosePrinter (hPrinter
)返回 (真)队列数量 =
获取打印机队列数量 ()
判断 (队列数量 > 0
)
调试输出 (“当前队列数量:”, 队列数量
)
如果 (清空打印机队列 ())

信息框 (“队列已清空”, 0, ,
)
信息框 (“清空失败”, 0, ,
)
判断 (队列数量 = 0
)
信息框 (“打印队列为空”, 0, ,
)
信息框 (“获取失败,错误代码:” +
到文本 (队列数量
), 0, ,
)