public void GetPrintersTest() { PrintQueueCollection printers = Printers.GetPrinters(); Type printQueueType = typeof(PrintQueue); PropertyInfo[] properties = printQueueType.GetProperties(); foreach (PrintQueue each in printers) { foreach (PropertyInfo field in properties) { Console.WriteLine(field.Name + ": " + field.GetGetMethod().Invoke(each, null)); } Console.WriteLine(); } }
private void PopulatePrinters() { bool enablePrinting = false; try { PrintQueueCollection printers = Printers.GetPrinters(); PrintQueue defaultPrintQueue = LocalPrintServer.GetDefaultPrintQueue(); string defaultPrinter = defaultPrintQueue.HostingPrintServer.Name + "\\" + defaultPrintQueue.Description; List <BackstageComboBoxItem> items = new List <BackstageComboBoxItem>(); foreach (PrintQueue each in printers) { BackstageComboBoxItem item = new BackstageComboBoxItem(); item.Tag = each; item.Header = each.Name; item.Description = GetFriendlyQueueStatus(each.QueueStatus) + (each.NumberOfJobs > 0 ? " (" + each.NumberOfJobs.ToString() + " document" + (each.NumberOfJobs != 1 ? "s" : "") + " waiting)" : ""); item.Image = new BitmapImage(new Uri(GetIconQueueStatus(each.QueueStatus, each.Description == defaultPrinter), UriKind.Absolute)); items.Add(item); } enablePrinting = items.Count > 0; if (enablePrinting) { PrintQueue tag = selectedPrinter; printersCombo.Items.Clear(); foreach (object each in items) { printersCombo.Items.Add(each); } if (tag != null) { bool found = false; foreach (FrameworkElement each in printersCombo.Items) { if (((PrintQueue)each.Tag).Description == tag.Description) { found = true; printersCombo.SelectedItem = each; break; } } if (!found) { printersCombo.SelectedIndex = 0; } } else { printersCombo.SelectedIndex = 0; } } } catch { enablePrinting = false; } printButton.IsEnabled = enablePrinting; if (!enablePrinting) { printersCombo.Items.Clear(); noPrintersItem.Header = "No Printers Installed"; printersCombo.Items.Add(noPrintersItem); printersCombo.SelectedIndex = 0; } }