我正在.Net(csharp 4.0)中开发一个应用程序,它检测是否安装了斑马打印机,然后如果在EPL中支持zpl,则将条形码发送到zpl中的打印机。如何检查斑马打印机是否已安装或在网络上可用(共享打印机),如果是,它支持 zpl 或 epl。我想检查设备 ID。但它看起来设备 id 只是显示名称,当我从打印机和设备更改打印机名称时会更改。
谢谢
我正在.Net(csharp 4.0)中开发一个应用程序,它检测是否安装了斑马打印机,然后如果在EPL中支持zpl,则将条形码发送到zpl中的打印机。如何检查斑马打印机是否已安装或在网络上可用(共享打印机),如果是,它支持 zpl 或 epl。我想检查设备 ID。但它看起来设备 id 只是显示名称,当我从打印机和设备更改打印机名称时会更改。
谢谢
您不想检查型号名称。相反,您检查哪些驱动程序正在控制打印机。毕竟——支持 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);
}
}
}