How do I set the windows default printer in C#? How do I set the windows default printer in C#? windows windows

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;