用aardio管理打印机及打印任务

最近用aardio写了一个打印管理工具,写了一个简单的库,实现了简单的打印机和打印任务管理功能,分享给大家一起学习。

库文件:printMGT

//Printer MGT
//打印机控制 by breezee

namespace printMGT;

import com.wmi;

//获取所有打印机
getAllPrinter = function() {
	//返回数据结构:
	//{name=打印机名, status=打印机状态, portName=端口名}
	var getPrinterStatus = function(statusCode) { //返回打印机状态
		select(statusCode) {
    		case 1 return "其他"
    		case 2 return "未知"
    		case 3 return "空闲"
    		case 4 return "正在打印"
    		case 5 return "预热"
    		case 6 return "停止打印"
    		case 7 return "脱机"
    		else   return "错误"
		}
	}		
	var prtList = {};
	//https://learn.microsoft.com/zh-cn/windows/win32/cimwin32prov/win32-printer?redirectedfrom=MSDN
	//https://wutils.com/wmi/root/cimv2/win32_printer/
	//DeviceID 系统上打印机的唯一标识符, PortName 端口, PrinterState 打印机的状态信息与逻辑设备
	for index, wmiPrinter in com.wmi.each("SELECT * FROM Win32_Printer") {
		..table.push( prtList, {name = wmiPrinter.Name; status = wmiPrinter.WorkOffline?"脱机":getPrinterStatus(wmiPrinter.PrinterStatus), portName = wmiPrinter.PortName}); //打印机名称,打印机状态:就绪/脱机/正在打印
	}
	return prtList;
}	


//获取打印任务
getPrintQueue = function(printerName) { //如果没有指定打印机,则读取所有打印任务
	//返回数据结构:
	//{name="打印机名称";jobs={
  
  {"文档名","状态","所有者","页数","文档大小","纸张大小","提交时间","端口","优先级","任务ID","打印机名称"}}}
	var jobs = {};

	for index, wmiJob in com.wmi.each("SELECT * FROM Win32_PrintJob") {
		//Name 打印机名+作业的标识符号; DriverName 用于打印作业的打印机驱动程序的名称;
		//JobId 作业的标识符; JobStatus 作业状态; Status 对象的当前状态; StatusMask 与此打印作业相关的可能状态的掩码
		//StartTime 作业开始的时间, ElapsedTime 作业执行的时间长度, TimeSu
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值