如何使用Delphi使用打印机名称获取PrinterIndex?

如何使用Delphi使用打印机名称获取PrinterIndex?,delphi,printing,printers,Delphi,Printing,Printers,我需要为三种不同的打印功能、标签、收据和“标准”(如A4)分别指定一台打印机。我已经使用listbox1.assign(printer.printers)识别了所有可用的打印机,但是似乎没有办法使用它来建立打印机的PrinterIndex。我想将printername和索引值存储在一个文件中,这样我就可以使用printer.printerindex为每种类型的打印作业分配一台打印机,而无需要求用户使用对话框选择打印机 我是不是走错了路?如果是的话,有人能告诉我正确的方法吗?我以前没有直接使用过打

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


我是不是走错了路?如果是的话,有人能告诉我正确的方法吗?我以前没有直接使用过
打印机
单元。

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


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

存储打印机索引不是一个好主意,因为如果用户添加/删除/重新安装打印机,索引可能会更改。我想我可以控制,因为除了我之外,没有人会添加/删除打印机驱动程序。可以直接使用打印机名称吗?您可能会在那里找到一个很好的答案:谢谢fpiette。我当然会试试,不用
vcl
!我还想到,每次使用打印机名称都可以检查索引。这很有效,非常感谢。如果您愿意设置一个,我们将很乐意接受您的答案。无需循环,只需使用
Printer.printers.IndexOf