在C#中将本地打印机设置为默认的最佳方法

时间:2013-10-15 21:36:42

标签: c# .net printing dllimport

我想在C#

中将本地打印机设置为默认值

我在Google搜索上找到了两种方法:

  1. 使用IWshRuntimeLibrary和IWshNetwork_Class
  2. [的DllImport( “WINSPOOL.DRV”)] private static extern bool SetDefaultPrinter(string printerName);
  3. 我在http://social.msdn.microsoft.com/Forums/vstudio/en-US/1ed0f29a-a5ff-4328-9c0f-f431f75fccbc/set-defualt-printer?forum=vbgeneral

    上的VB中找到了#1

    其C#代码:

    new IWshRuntimeLibrary.IWshNetwork_Class().SetDefaultPrinter(printerName)
    

    因此,#1是COM互操作。 #2是一个简单的dll调用。

    我已经尝试了两者,两者都很好。那么,我应该使用哪个?我是否需要为#1安装一个单独的库(在客户机上)?

2 个答案:

答案 0 :(得分:2)

我会选择直接的DLL调用。我敢打赌IWshRuntimeLibrary在内部调用Winspool.drv,然后从图片中取出COM层。 Windows机器似乎不太可能没有正确注册Windows Scripting Host,但Winspool.drv似乎不太可能。{/ p>

答案 1 :(得分:1)

我认为.NET以托管解决方案的形式提供了您正在寻找的东西。尝试查看LocalPrintServer class,特别是DefaultPrintQueue property。这里有一些example code