Есть ли возможность отличить виртуальный принтер от физического? - PullRequest
9 голосов
/ 24 февраля 2010

У меня есть список всех принтеров, доступных в WinXP. Мне нужен код (в идеале .NET), чтобы отфильтровать все виртуальные принтеры из этого списка. Возможно ли это сделать? Я проанализировал все свойства WinI-класса Win32_Printer, но не нашел подходящего. Пожалуйста, помогите.

Ответы [ 2 ]

5 голосов
/ 14 ноября 2014

Я знаю, что это старый вопрос, но этот ответ может быть полезен для кого-то с такой же проблемой.

Если я правильно понимаю «виртуальный принтер». Вы можете проверить свойство WMI «PrintProcessor» и проигнорировать «winprint». Насколько мне известно, это будет игнорировать все параметры принтера, основанные на Windows 7. Вот пример кода, демонстрирующий это. Возвращает имя принтера.

        using System.Management;

        try
        {
            ManagementObjectSearcher searcher = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_Printer");

            foreach (ManagementObject obj in searcher.Get())
            {
                if(obj != null)
                {
                    if(obj["PrintProcessor"].ToString().ToUpper() != "WINPRINT")
                    {
                        Console.WriteLine(obj["Name"]);
                    }
                }
            }
        }
        catch (ManagementException e)
        {
            MessageBox.Show("An error occurred while querying for WMI data: " + e.Message);
        }
5 голосов
/ 24 февраля 2010

Я не думаю, что это возможно, по крайней мере, с уверенностью. Смысл виртуального принтера заключается в том, чтобы максимально точно имитировать реальный принтер, поэтому любые отличия, которые вы можете выявить, - это просто ошибки в виртуальном принтере.

Тем не менее, вы можете сделать некоторые догадки на основе PortName. Просто для пары примеров, PortName, который включает IP-адрес или начинается с «USB», скорее всего, относится к физическому соединению.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...