views:

1265

answers:

3

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

+4  A: 

Using the SetDefaultPrinter Windows API.

Here's how to pInvoke that.

rein
A: 

You can use WMI as well.
http://cheeso.members.winisp.net/srcview.aspx?file=printer.cs

Cheeso
+2  A: 

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);

}

}

Johan