【问题标题】:How do I get the PrinterIndex using the Printer Name using Delphi?如何使用 Delphi 使用打印机名称获取 PrinterIndex?
【发布时间】:2021-01-25 16:48:32
【问题描述】:

我需要为三种不同的打印功能、标签、收据和“标准”(例如 A4)中的每一种分配一台打印机。我已经使用listbox1.assign(printer.printers) 确定了所有可用的打印机,但似乎没有办法使用它来建立打印机的PrinterIndex。我想将打印机名称和索引值存储在一个文件中,这样我就可以使用printer.printerindex 将打印机分配给每种类型的打印作业,而无需要求用户使用对话框选择打印机。

我是不是走错了路,如果是这样,有人可以告诉我正确的方法吗?我以前不必直接使用printers 单元。

【问题讨论】:

  • 存储打印机索引不是一个好主意,因为如果用户添加/删除/重新安装打印机,索引可能会发生变化。
  • 我想我可以控制它,因为除了我之外没有人会添加/删除打印机驱动程序。是否可以直接使用打印机名称?
  • 你可能会在那里找到一个很好的答案:stackoverflow.com/questions/20277061/…
  • 感谢 fpiette。我一定会试试的,没有vcl!
  • 我还想到每次使用打印机名称都可以检查索引。这行得通,非常感谢。如果您愿意设置一个,我们很乐意接受您的回答。

标签: delphi printing printers


【解决方案1】:

将打印机名称保存在文件中,而不是索引中。

当您重新启动程序并读回打印机名称时。然后循环遍历所有打印机以查找保存名称的打印机(它可能已被删除或重命名)并使用该打印机。

【讨论】:

  • 不用循环,直接用Printer.printers.IndexOf即可。
  • 在 Windows 终端服务器的情况下,必须从打印机名称中删除会话号!在这种情况下,循环是必需的。
猜你喜欢
  • 1970-01-01
  • 2015-12-26
  • 2012-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多