2011-06-17 52 views
4

我正在寻找最佳方法来更改WPF应用程序中的默认打印机。以下是我们希望应用程序可以执行的步骤。在WPF应用程序中更改默认打印机

  1. 从映射到打印机名称的下拉列表中选择一个位置。
  2. 将默认打印机更改为映射名称。
  3. 启动IE并指向SSRS报告。然后
  4. 用户从IE打印报告,该报告将使用新的默认打印机

第二步就是我要找的援助。

这是WMI的用例吗?如果是这样,关于这个问题的任何资源将是一个巨大的帮助。

谢谢!

回答

6

使用这样的:

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 }); 
    } 
} 
+0

我加入System.Management和System.Management.Instrumentation基准,并增加了进口 '使用System.Management;'。不过,我仍然在'currentObject'和'InvokeMethod'下面看到错误行。我猜测'currentObject'实际上需要'打印机',但是这仍然不能解决'InvokeMethod'问题。 – NickHeidke

+0

对不起我错 –

+0

我越来越想打电话时,InvokeMethod打印机对象上的错误: “System.Management.ManagementBaseObject”不包含“的InvokeMethod”,没有扩展方法的定义“的InvokeMethod”接受的第一个参数可以找到类型'System.Management.ManagementBaseObject'(你是否缺少使用指令或程序集引用?) – NickHeidke

相关问题