2012-05-08 5 views
2

얼룩말 프린터가 설치되어 있는지 감지하고 zpl이 다른 곳에서 EPL로 바뀌면 zpl에서 바코드를 프린터로 전송하는 .Net (csharp 4.0)을 개발 중입니다. Zebra 프린터가 설치되어 있거나 네트워크 (공유 프린터)에서 사용 가능한지 확인하려면 어떻게해야합니까? 그렇다면 zpl 또는 epl을 지원합니다. Device ID를 확인해 보았습니다. 하지만 보이는 장치 ID는 단지 표시 이름이며 프린터 및 장치에서 프린터 이름을 변경할 때 변경됩니다.얼룩말 프린터가 설치되어 있는지 여부를 감지하는 방법

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

관련 문제