【问题标题】:How can I display the printer properties with C#如何使用 C# 显示打印机属性
【发布时间】:2012-03-20 14:58:41
【问题描述】:

围绕这个做了很多搜索,到目前为止,我只设法获得打印机首选项,而不是属性。

我想调用实际的打印机属性窗口,您可以在该窗口中直接从代码中设置打印机的安全数据。

我有打印机名称等,只需要能够显示它的属性

任何帮助将不胜感激!

到目前为止,我已经尝试了几种不同的实现,最常见的涉及 winspool.Drv,它显示了实际的打印机属性窗口(通常是制造商的自定义窗口)

例子:

【问题讨论】:

  • 你是说显示print dialog吗?您可以使用它让用户创建一个包含打印机所有配置信息的 PrintTicket。问题是“接受”按钮显示“打印”。 Tried to figure that one out 但从未成功。
  • 不,我不认为这是打印对话框 - 我实际上并没有尝试打印任何内容,只是访问对话框以将安全设置为应用程序的一部分。将添加示例图像
  • 你尝试过使用rundll32 printui.dll,PrintUIEntry /p /n "printernamegoeshere"之类的东西吗?
  • 看准了!那会很好的
  • @ScottChamberlain - 我没有,这是兄弟网站上的图像(我假设他们将其模糊以免造成混淆,因为他们对多台打印机使用相同的图像)

标签: c# printing


【解决方案1】:

您可以使用类似的方式启动打印机属性对话框

rundll32 printui.dll,PrintUIEntry /p /n "printernamegoeshere"

使用Process 类。

【讨论】:

    【解决方案2】:

    事实上,有一个native API 用于调用该窗口 - 调用OpenPrinter,然后调用PrinterProperties

    从 C# 开始,您将不得不走 p/invoke 路线...

    【讨论】:

      【解决方案3】:

      要使用 Process 类启动打印机属性而不显示 CMD 窗口,请使用以下代码:

      string printerName = "Microsoft Print to PDF"; // Change this with your printer name 
      System.Diagnostics.Process process = new System.Diagnostics.Process();
      System.Diagnostics.ProcessStartInfo startInfo = new 
      System.Diagnostics.ProcessStartInfo();
      startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
      startInfo.FileName = "cmd.exe";
      startInfo.Arguments = "/C rundll32 printui.dll,PrintUIEntry /p /n \"" + printerName + "\"";
      process.StartInfo = startInfo;
      process.Start();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-27
        • 1970-01-01
        • 2015-04-26
        • 1970-01-01
        • 2021-08-27
        相关资源
        最近更新 更多