我有一些旧版软件,只能在通过 LPT 端口连接的打印机上打印。但是,我需要使用的机器没有并行端口。另外,我的打印机是 USB 设备。
如何才能欺骗我的计算机,让它认为我的 USB 打印机已连接到 LPT 端口?
此外,这是针对办公室的。实施解决方法时我将拥有管理员权限,但我正在寻找一种在一切设置完成后,当“普通”用户登录时仍能正常工作的解决方案。
答案1
您可以通过将 USB 打印机用作连接到 LPT1 的虚拟“网络”打印机来欺骗 Windows。
共享 USB 打印机
使用容易记住的共享名称,例如“打印机”。
将共享打印机连接为LPT1
NET USE LPT1: \\[Computer-Name]\Printer /PERSISTENT:YES
答案2
使用 USB 转并行适配器没有任何意义。我们这里谈论的是使用非常老旧的旧软件,该软件只支持 USB 连接。我的情况是 ZEBRA 标签打印机。
就我的情况而言,解决方案是。
- 安装 USB 打印机及其驱动程序(只需找到连接的 USB 端口)
- 将驱动程序的端口更改为 FILE(并释放 USB 端口)
- 安装通用/纯文本驱动程序,并将端口更改为与第 1 点相同的逻辑 USB 端口
- 共享通用/纯文本打印机,以便使其在 VBA 中轻松可见
- 在固定的未使用的 IP 地址上安装 Microsoft Loopback 适配器(否则当电缆断开时您的打印机将不可见)
- 按照命令行前面的说明分配一个 LPTx:端口(这适用于每个需要旧 LPT 的 SW)
只需几行代码,您就可以像过去一样将 ASCII 代码发送到打印机。
现在您可以轻松地在 VBA 中打印(已使用 Windows 7 64 位和 ZM400 Zebra 打印机测试)
Open "\\Kb\ZM400" For Output As #1 'Kb = computer Name; ZM400 = Shared printer name
For rows = 1 To 37 ' send the first 37 rows of ASCII codes from the worksheet "STRINGS"
Print #1, Worksheets("STRINGS").Cells(rows, 1).Value
Next
Close #1
答案3
也许可以看看威普:
获得由 DOS 应用程序生成的标准打印机输出,并将其转发到默认的 Windows 打印机。转换代码页、删除空白页、支持 BOX DRAWINGS 字符。适用于所有 Windows 平台。
答案4
DOS 程序仍在商业世界中使用。关于如何让它们在现代计算平台上正常运行的建议在网上随处可见。以下是对我有用的方法。
我们需要使用的 16 位 DOS 程序驻留在即将被移除的 32 位 Windows 2003 服务器上。在此之前,程序的共享通过组策略映射到主域中的两台 32 位客户端计算机上。启动程序的 .cmd 文件的快捷方式手动放置在客户端上,也在主域上。该程序在 Windows 8.1 上运行良好。当然,这有点妥协,但当从辅助域运行的 DOS 程序退役时,机器将升级到 64 位 Windows 8.1。
从程序中打印是最大的挑战。此程序使用两台不同的并行打印机,但程序仅打印到一个端口,并且没有选项可以更改此行为。需要将支票打印到激光打印机?它需要连接到端口 LPT1。需要将数据转储打印到点阵打印机?它也需要连接到端口 LPT1。有两个人每天都使用此程序,因此我们将使用他们的计算机,每台打印机一台。让我们安装第一台打印机:
如果计算机有物理 DB-25(并行)端口,您可以在 BIOS 中禁用它。Windows 8.1 不支持它,我们不需要它。
使用 Cables-to-Go 型号 16899 USB 转 DB25 并行打印机适配器将打印机连接到计算机。该适配器会自动安装,但不会被识别为并行设备或 LPT 端口。
现在打开设备和打印机。单击添加打印机并选择我想要的打印机未列出。在下一个对话框中选择添加本地打印机或手动设置的网络打印机,然后在下一个对话框中选择使用现有端口。从列表中为 USB 选择虚拟打印机端口,USB001 或 USB002,而不是 LPT 端口选项。
第一台打印机是松下 KX-P1191 多模式点阵打印机。打印机未列在要求驱动程序的对话框中,单击 Windows 更新来更新列表也无济于事。查看松下的支持网站后发现,目前该打印机完全不受支持,但松下技术支持专家帮助找出了 Windows 8.1 附带的 Epson FX Series 1(80) 驱动程序的线索。它运行正常。
现在打印机已安装完毕。但它位于 USB001 端口,程序只会打印到 LPT1 端口。解决方案相对简单,可以直接集成到用于启动程序的批处理文件中。让我们采用老办法,在打印机上玩个花样:我们将共享它并以这种方式打印到 LPT1。
右键单击打印机并选择“属性”。共享打印机,不要将其列在目录中,创建一个简短的共享名称以方便使用,然后确保客户端计算机的用户列在“安全”选项卡下的“组或用户名”区域中。
这两个将使用这些打印机进行打印的人构成了我的收入来源,因此我授予他们域管理员权限。这可能没有必要。他们都是主域上的用户,但不是辅助域上的用户,我不想花时间解决权限问题。
现在修改批处理文件并使用有据可查的 net use 命令来实现打印解决方案:
@echo off
::delete the printer
net use lpt1 /delete
::add the printer
net use lpt1 \\\COMPUTER\PRINTER /persistent:yes
::fire up the nasty ol' DOS program
<existing syntax used to start the program>
其中 COMPUTER 是计算机的名称,PRINTER 是打印机的共享名称。该过程在第二台计算机上使用 Windows 8.1 附带的“HP LaserJet 1100 (MS)”驱动程序的 HP LaserJet 1100 打印机同样有效。
-- 注释 --
系统错误5:
确保用户列在安全选项卡下。可以删除“所有人”。用户是否需要域管理员权限?如果所有内容都从一个域运行,则可能不需要。
系统错误 66:
检查语法。您可能拼错了计算机或打印机的名称,或者漏掉了冒号?根据 Microsoft 文档,只需要一个冒号。在 lpt1[:] 中添加不必要的冒号会导致失败吗?
关于网络使用的所有信息: https://technet.microsoft.com/en-us/library/bb490717.aspx