How do I set the windows default printer in C#?
using System;using System.Drawing.Printing;using System.Windows.Forms;using System.Runtime.InteropServices;namespace WindowsFormsApplication1{ public partial class Form1 : Form { private void listAllPrinters() { foreach (var item in PrinterSettings.InstalledPrinters) { this.listBox1.Items.Add(item.ToString()); } } private void listBox1_SelectedValueChanged(object sender, EventArgs e) { string pname = this.listBox1.SelectedItem.ToString(); myPrinters.SetDefaultPrinter(pname); } public Form1() { InitializeComponent(); listAllPrinters(); } } public static class myPrinters { [DllImport("winspool.drv", CharSet = CharSet.Auto, SetLastError = true)] public static extern bool SetDefaultPrinter(string Name); }}
Step 1: Paste the following code anywhere in your .cs file
public static class PrinterClass { [DllImport("winspool.drv", CharSet = CharSet.Auto, SetLastError = true)] public static extern bool SetDefaultPrinter(string Printer); }
Step 2: Add the neccesary namespace i.e
using System.Runtime.InteropServices;
Step 3: Use the following function to set desired printer as default printer.
PrinterClass.SetDefaultPrinter("Paste your desired Printer Name here");
Step 4: To get the list of all printers attached to your PC, you can use this code.
private void FillListBox() { foreach (var p in PrinterSettings.InstalledPrinters) { cmbdefaultPrinter.Properties.Items.Add(p); } } //Here cmbdefaultPrinter is a combobox, you can fill the values into a list.
Namespaces required for the above code are:
using System.Drawing.Printing;using System.Runtime.InteropServices;