PrintQueue或PrintTicket是否有任何属性或方法来确定所选的打印机是虚拟打印机?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PrintQueue或PrintTicket是否有任何属性或方法来确定所选的打印机是虚拟打印机?相关的知识,希望对你有一定的参考价值。
PrintQueue或PrintTicket是否有任何属性或方法来确定所选的打印机是虚拟打印机?例如,该过程应限制M / S Xps文档编写器,传真,发送到OneNote,PDF打印机等。只有实际的打印机应从LocalPrintServer中过滤掉并动态提供列表。
using (var _LocalPrintServer = new LocalPrintServer())
{
foreach (PrintQueue _pq in _LocalPrintServer.GetPrintQueues())
{
// To Find some way to determine this _pq is NOT a virtual printer
}
}
答案
您将需要探测Win32_Printer
类中的属性
System.Management.ObjectQuery oq = new System.Management.ObjectQuery("SELECT * FROM Win32_Printer");
ManagementObjectSearcher mos = new ManagementObjectSearcher(oq);
ManagementObjectCollection moc = mos.Get();
foreach( ManagementObject mo in moc )
{
string name = mo["Name"].ToString();
string language = mo["DefaultLanguage"].ToString();
MessageBox.Show(String.Format("Printer: {0} -- Language: {1}", name, language);
}
也许你可以检查languages
字段的postscript或pcl(只是一个猜测),虽然你可能只需要检查所有打印机之间的差异,找到一个松散的指示方式。
在任何情况下,我都相当自信没有办法确切地检查你想要什么,因为没有关于你的规格的虚拟打印机字段。
以上是关于PrintQueue或PrintTicket是否有任何属性或方法来确定所选的打印机是虚拟打印机?的主要内容,如果未能解决你的问题,请参考以下文章
将 PrintQueue 对象从一台计算机发送到另一台计算机?
System.Printing.PrintQueue QueueStatus 未更新
C# PrintQueue AddJob printingHandle 抛出空异常
'UInt32 System.Printing.PrintQueue.GetDpiX(System.Printing.ILegacyDevice)问题解决方法