/// <summary> /// /// </summary> /// <param name="name"></param> /// <returns></returns> public static PrintQueue GetPrintQueue(string name, string host) { if (String.IsNullOrWhiteSpace(name)) { return(null); } try { dynamic printServer; PrintQueue printQueue = null; if (String.IsNullOrWhiteSpace(host) || host == Environment.MachineName) { printServer = new LocalPrintServer(); } else { printServer = new PrintServer(host); } if (printServer == null) { return(null); } //name = name.Replace(host, ""); LogHelper.LogDebug("SSSS"); printServer.Refresh(); LogHelper.LogDebug("Refresh"); PrintQueueCollection printerCollection = printServer.GetPrintQueues(); if (printerCollection == null) { return(null); } LogHelper.LogDebug("Queues " + printerCollection.Count()); foreach (PrintQueue printer in printerCollection) { printer.Refresh(); LogHelper.LogDebug("Name " + printer.Name); if (printer.Name == name) { LogHelper.LogDebug("Has queue"); printQueue = printer; } } LogHelper.LogDebug("Out "); return(printQueue); } catch (Exception ex) { LogHelper.Log(ex); return(null); } }
static PrintingProvider() { // Initialize local print server _localPrintServer = new LocalPrintServer(); // Provide enumeration flags to obtain local printers and connected network printers EnumeratedPrintQueueTypes[] _enumerationFlags = { EnumeratedPrintQueueTypes.Local, EnumeratedPrintQueueTypes.Connections }; // Obtain print queues from server _localPrinterCollection = _localPrintServer.GetPrintQueues(_enumerationFlags); if (_localPrinterCollection.Count() == 0) { throw (new Exception("Cannot find system printers. You must have at least one printer installed.")); } // Fill _printerNamesList _printerNamesList = new List <string>(); foreach (PrintQueue queue in _localPrinterCollection) { _printerNamesList.Add(queue.FullName); } } //end:PrintingProvider