德尔福与多台打印机

时间:2015-02-08 09:30:23

标签: delphi printing

我有应用程序需要在3台打印机上打印
我将打印机名称保存在txt文件中 问题是用户断开并重新连接打印机(usb打印机) 它需要一个新名称或另一个名称,打印混淆。

如果名称发生变化,我如何选择打印机?

1 个答案:

答案 0 :(得分:1)

USB相机遇到了同样的问题。一旦设备移动到另一个USB端口,它们也倾向于在窗口下为设备创建另一个带有附加编号的实例/条目(例如:Epson Blah Blah#1)。

答案最可能在于设备描述符。更具体地说,是设备的HardwareID。

要快速查看设备的硬件ID,请转到控制面板>设备管理器(如果是Win7或更高版本)然后右键单击设备,无论是USB闪存驱动器还是USB摄像头。点击属性并转到"详细信息"标签。更改"属性"值为"硬件ID"。您将看到HardwareIDs

您可以在此处找到更多相关信息: https://msdn.microsoft.com/en-us/library/windows/hardware/ff539283%28v=vs.85%29.aspx

https://msdn.microsoft.com/en-us/library/windows/hardware/jj649944%28v=vs.85%29.aspx

后者讨论了注册表项,您还可以在其中找到设备的信息。关键是:

HKEY_LOCAL_MACHINE \ SYSTEM \ CURRENTCONTROLSET \控制\ DeviceClasses \ HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Enum \ USB \\\设备参数 HKEY_LOCAL_MACHINE \ SYSTEM \ CURRENTCONTROLSET \枚举\ USB

因此,如果您可以将HardwareID链接到打印机,那么您可以枚举已安装的打印机进行比较,然后选择所需的打印机。因此,您最初将安装打印机,让您的应用程序选择该打印机并保存其HardwareID。然后,每次在PC上更改设备时,您都可以获得与最初安装的打印机相关的设备。

我没有对此进行测试,因为我目前没有两个完全相同的设备,以确保两者都没有相同的硬件ID。