2012-05-08 3 views
2

Я разрабатываю приложение в .Net (csharp 4.0), которое определяет, установлен ли принтер зебры, а затем отправляет штрих-код на принтер в zpl, если zPL в противном случае будет использоваться в EPL. Как я могу проверить Если принтер зебры установлен или доступен в сети (общий принтер), и если да, то он поддерживает zpl или epl. Я решил проверить идентификатор устройства. но он выглядит как идентификатор устройства, это просто отображаемое имя и изменяется при изменении имени принтера с принтеров и устройств.Как определить, установлен ли принтер зебры или нет

thanx

+1

Автоматическое обнаружение просто не будет работать. Что делать, если доступны два принтера? Это должно быть конфигом с именем принтера или разрешить пользователю выбирать принтер с помощью PrintDialog. –

ответ

3

Вы не хотите проверять имя модели. Вместо этого вы проверяете, какие драйверы управляют принтерами. В конце концов, принтер с поддержкой ZPL будет использовать драйвер принтера Zebra. И вы можете проверить свойство drivername, как показано ниже. Есть, конечно, еще много свойств в отношении принтера.

using System; 
using System.Management; 

namespace Test 
{ 
    class Program 
    { 
     public static void Main(string[] args) 
     { 
      string query = string.Format("SELECT * from Win32_Printer"); 
      ManagementObjectSearcher searcher = new ManagementObjectSearcher(query); 
      ManagementObjectCollection coll = searcher.Get(); 

      foreach (ManagementObject printer in coll) 
      { 
       //foreach (PropertyData property in printer.Properties) 
       //{ 
       // Console.WriteLine(string.Format("{0}: {1}", property.Name, property.Value)); 
       //} 

       var property = printer.Properties["DriverName"]; 
       if (property.Value.ToString().ToLowerInvariant().Contains("zebra")) 
       { 
        Console.ForegroundColor = ConsoleColor.Red; 
        Console.Write("ZEBRA: "); 
       } 
       else 
       { 
        Console.ForegroundColor = ConsoleColor.Gray; 
        Console.Write("Regular: "); 
       } 

       Console.WriteLine(string.Format("{0}: {1}", property.Name, property.Value)); 
      } 

      Console.Write("Press any key to continue . . . "); 
      Console.ReadKey(true); 
     } 
    } 
} 
+0

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

+0

Я привел пример, как найти принтеры Zebra. – Jaapjan

+0

thanx, мой драйвер принтера показывает ZDesigner в имени драйвера. Кажется, мне нужно обрабатывать как зебра, так и zdesigner, проверяя драйвер. – ZafarYousafi

Смежные вопросы