如何使用 Delphi 使用打印机名称获取 PrinterIndex?
Posted
技术标签:
【中文标题】如何使用 Delphi 使用打印机名称获取 PrinterIndex?【英文标题】:How do I get the PrinterIndex using the Printer Name using Delphi? 【发布时间】:2021-01-25 16:48:32 【问题描述】:我需要为三种不同的打印功能、标签、收据和“标准”(例如 A4)中的每一种分配一台打印机。我已经使用listbox1.assign(printer.printers)
确定了所有可用的打印机,但似乎没有办法使用它来建立打印机的PrinterIndex
。我想将打印机名称和索引值存储在一个文件中,这样我就可以使用printer.printerindex
将打印机分配给每种类型的打印作业,而无需要求用户使用对话框选择打印机。
我是不是走错了路,如果是这样,有人可以告诉我正确的方法吗?我以前不必直接使用printers
单元。
【问题讨论】:
存储打印机索引不是一个好主意,因为如果用户添加/删除/重新安装打印机,索引可能会发生变化。 我想我可以控制它,因为除了我之外没有人会添加/删除打印机驱动程序。是否可以直接使用打印机名称? 你可能会在那里找到一个很好的答案:***.com/questions/20277061/… 感谢 fpiette。我一定会试试的,没有vcl
!
我还想到每次使用打印机名称都可以检查索引。这行得通,非常感谢。如果您愿意设置一个,我们很乐意接受您的回答。
【参考方案1】:
将打印机名称保存在文件中,而不是索引中。
当您重新启动程序并读回打印机名称时。然后循环遍历所有打印机以查找保存名称的打印机(它可能已被删除或重命名)并使用该打印机。
【讨论】:
不用循环,直接用Printer.printers.IndexOf
即可。
在 Windows 终端服务器的情况下,必须从打印机名称中删除会话号!在这种情况下,循环是必需的。以上是关于如何使用 Delphi 使用打印机名称获取 PrinterIndex?的主要内容,如果未能解决你的问题,请参考以下文章
2008 64位标准服务器上的Delphi Win32服务“打印机选择无效”错误