2

.Net(csharp 4.0) でアプリケーションを開発しています。ゼブラ プリンターがインストールされているかどうかを検出し、EPL で zpl がサポートされている場合はバーコードを zpl のプリンターに送信します。ゼブラ プリンターがインストールされているか、ネットワーク (共有プリンター) で使用できるかどうかを確認するにはどうすればよいですか。使用できる場合は、zpl または epl をサポートしています。デバイスIDを確認しようと思いました。しかし、デバイスIDは単なる表示名であるように見え、プリンターとデバイスからプリンター名を変更すると変更されます。

ありがとう

4

1 に答える 1

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);
        }
    }
}
于 2012-05-08T09:34:30.570 に答える