Change Default Printer within WPF Application

2019-04-10 01:47发布

问题:

I'm looking for the best approach to change the default printer within a WPF application. Here are the steps the we're hoping the application can do.

  1. Select a location from a drop down which is mapped to a printer name.
  2. Change the default printer to the mapped name.
  3. Launch IE and point to SSRS report.
  4. User will then print report from IE, which will use the new default printer

Step two is what I'm looking for assistance with.

Is this a use case for WMI? If so, any resources on the subject would be a huge help.

Thanks!

回答1:

use this:

var query = new ManagementObjectSearcher("SELECT * FROM Win32_Printer"); 
var printers = query.Get();
string printerName = "Printer to set as default" ;
foreach(ManagementObject printer in printers) 
{ 
   if (printer["name"].ToString() == printerName.ToString()) 
   { 
      printer.InvokeMethod("SetDefaultPrinter", new object[] { printerName }); 
   } 
}