C# winForm to modify the default printer (the effect is not very good, there will be a system print pop-up window for each modification (win10))

1. Interface: 1 button + 1 combobox;

2. Opening Shadows

using System.Runtime.InteropServices;

3. Code

        private void Form1_Load(object sender, EventArgs e)
        {
            InitprinterComboBox(); // Initialize the printer drop-down list options 
        }
        private void InitprinterComboBox()
        { // Initialize the printer list 
            PrintDocument printDocument = new PrintDocument();
             string defaultPrinter = printDocument.PrinterSettings.PrinterName; // Get the default printer name

            foreach (string printer in PrinterSettings.InstalledPrinters)
            { // Get all printer names 
                combobox1.Items.Add(printer);
                 if (printer == defaultPrinter)
                { // The default printer is set to the first item in the list 
                    combobox1.SelectedIndex = combobox1.Items.IndexOf(printer);
                }
            }
        }
        private void button1_Click(object sender, EventArgs e)
        { // Set the default printer button 
            try
            {
                if (Externs.SetDefaultPrinter(cmbPrinter.SelectedItem.ToString())) 
                { // Set the default printer 
                    MessageBox.Show(cmbPrinter.SelectedItem.ToString() + " Set as default printer successfully! " );
                }
            }
            catch(Exception ex)
            {
                MessageBox.Show( " Failed to set as default printer: " + ex.Message);
            }
        }
        class Externs
        { // Call win api to set the printer with the specified name as the default printer 
            [DllImport( " winspool.drv " )] // Introduce 
            public  static  extern  bool SetDefaultPrinter(String printerName); // Define external library functions 
        }

 

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325113183&siteId=291194637