繁体   English   中英

PrintQueue或PrintTicket是否具有任何属性或方法来确定所选打印机是虚拟打印机?

[英]Does PrintQueue or PrintTicket has any property or method to determine the selected printer is a virtual printer?

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);
}

也许您可以检查postscipt或pcl的languages字段(仅是一个猜测),尽管您可能只需要检查所有打印机之间的差异以找到一种宽松的指示性方法即可。

在任何情况下,我都可以确信没有办法完全检查您想要的内容,因为对于您的规格没有所谓的虚拟打印机字段。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM