【问题标题】:Setting the default Printer for windows using c#使用 c# 为 windows 设置默认打印机
【发布时间】:2014-01-17 05:15:16
【问题描述】:

我想在单击按钮时为 Windows/系统设置设置默认打印机。我想单击一个按钮,并希望出现一个窗口对话框,要求用户设置默认打印机。现在我正在为此使用 PrintDialog,但每次单击按钮时它都会更改打印机。我想将所选打印机设置为默认打印机,即使我关闭应用程序也应该保持不变。

private void PrintSettingsBtn_Click(object sender, EventArgs e)
{
  PrintDialog PrintDialog = new PrintDialog();
  PrintDialog.ShowDialog();
  PrinterName = PrintDialog.PrinterSettings.PrinterName;
}

【问题讨论】:

    标签: c# printing


    【解决方案1】:

    试试SetDefaultPrinterWindows API函数

       using System.Runtime.InteropServices;
    
       ...
    
       [DllImport("winspool.drv", 
                  CharSet = CharSet.Auto, 
                  SetLastError = true)]
       [return: MarshalAs(UnmanagedType.Bool)]
       public static extern Boolean SetDefaultPrinter(String name);
    
       ...
    
       SetDefaultPrinter(PrinterName);
    

    http://msdn.microsoft.com/en-us/library/windows/desktop/dd162971(v=vs.85).aspx http://www.pinvoke.net/default.aspx/winspool/SetDefaultPrinter.html?diff=y

    【讨论】:

    • 你能告诉我我必须包含哪个库吗?
    • 您不必包含任何库:DllImport 和 MarshaAs 在 mscorlib 中; winspool.drv 是 Windows 的一部分,所以您已经拥有了。
    【解决方案2】:

    在解决方案资源管理器中右键单击项目,选择属性。选择设置选项卡, 添加 PrinterName 设置。

    在代码中使用设置:

    string PrinterName
    {
        get { return (string)Properties.Settings.Default["PrinterName"]; }
        set 
        { 
            Properties.Settings.Default["PrinterName"] = value;
            Properties.Settings.Default.Save(); 
        }
    }
    
    private void print_Click(object sender, EventArgs e)
    {
        PrintDialog pd = new PrintDialog();
        if (PrinterName != "")
            pd.PrinterSettings.PrinterName = PrinterName;
        if (pd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
        {
            // Print
    
            PrinterName = pd.PrinterSettings.PrinterName;
        }
    }
    

    【讨论】:

    • 它给了我异常找不到设置属性“PrinterName”。
    • 当我在 SolutionExplorer 中右键单击解决方案时,它没有给我任何设置。但是当我单击我的项目文件夹之一时,它会打开设置
    • 您需要项目设置(WindowsFormsApplication1 或类似的东西),而不是解决方案设置。看看social.msdn.microsoft.com/Forums/getfile/193805
    猜你喜欢
    • 2017-07-07
    • 2011-07-07
    • 2010-11-11
    • 1970-01-01
    • 2011-10-17
    • 2016-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多