Esempio n. 1
0
        public static bool GetPrinterInfo(ref PrinterInfo printerInfo)
        {
            printerInfo.Status = Status.None;

            string query = string.Format("SELECT * from Win32_Printer WHERE Name LIKE '%{0}'", printerInfo.Caption);
            var searcher = new ManagementObjectSearcher(query);
            var coll = searcher.Get();

            foreach (ManagementObject printer in coll)
            {
                var ps = new PrinterSettings {PrinterName = printerInfo.Caption};
                if (ps.IsValid)
                {
                    printerInfo.Status = Status.OK;
                    printerInfo.Port = printer.Properties["PortName"].Value.ToString();
                    printerInfo.Driver = printer.Properties["DeviceID"].Value.ToString();
                    printerInfo.Color = ps.SupportsColor;
                    printerInfo.Name = printer.Properties["DeviceID"].Value.ToString();
                    printerInfo.Network = Convert.ToBoolean(printer.Properties["Network"].Value);
                }
                else
                {
                    printerInfo.Status = Status.Error;
                }
            }
            return true;
        }
Esempio n. 2
0
 private void SetPrinterDriver(SettingsPrinter printer)
 {
     var info = new PrinterInfo();
     info.Caption = printer.Caption;
     if (PrinterHelper.GetPrinterInfo(ref info))
     {
         printer.Name = info.Name;
         printer.Port = info.Port;
     }
     var manf = info.Name.Split(new[] {" "}, StringSplitOptions.RemoveEmptyEntries)[0];
     var pluginName = _pluginsManager.LoadedPlugins[0].Name;
     foreach (var loadedPlugin in _pluginsManager.LoadedPlugins)
     {
         if (loadedPlugin.Brand.ToLower().Contains(manf.ToLower()))
         {
             pluginName = loadedPlugin.Name;
             var ports = loadedPlugin.Port.Split(',');
             var foundMatch = false;
             foreach (var port in ports)
             {
                 if (port.Trim().ToLower().Contains(info.Port.Substring(0, port.Trim().Length).ToLower()) ||
                     port.Trim() == "*" || (port.Trim().ToLower() == "network" && info.Network))
                 {
                     foundMatch = true;
                     break;
                 }
             }
             if (foundMatch)
                 break;
         }
     }
     printer.Plugin = pluginName;
 }