java printerjob打印_如何从Win32_PrintJob的打印作业中获取打印机名称?

通过WMI查询获取所有打印机,遍历每个打印机的本地属性和服务器信息,创建PrintServer和PrintQueue对象。然后,检查PrintJobInfoCollection中的作业信息,匹配成功则返回打印机名称。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

您可以使用此代码:

// produce wmi query object

ObjectQuery query = new ObjectQuery("SELECT * FROM Win32_Printer);

// produce search object

ManagementObjectSearcher search = new ManagementObjectSearcher(quer);

// retrieve result collection

ManagementObjectCollection restul = search.Get();

// iterate through all printers

foreach(ManagementObject obj in result)

{

// now create your temp printer class

Dictionary printerObj = new Dictionary();

if(obj.GetPropertyValue("Local").ToString().Equals("true"))

{

printerObj.Add("isLocal", true);

printerObj.Add("name", obj.GetPropertyValue("name").ToString());

}

else

{

printerObj.Add("isLocal", false);

printerObj.Add("serverName", obj.GetPropertyValue("ServerName").ToString());

printerObj.Add("shareName", obj.GetPropertyValue("ShareName").ToString());

}

// create real printer object

PrintServer srv = ((bool)printerObj["isLocal")) ? new LocalPrintServer() : new PrintServer((string)printerObj["serverName"]);

PrintQueue queue = srv.GetPrintQueue(((bool)printerObj["isLocal")) ? (string)printerObj["name"] : (string)printerObj["shareName"];

foreach(var job in queue.GetPrintJobInfoCollection())

{

// check job info and if it matches, return printer name;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值