Delphi 打印机。打印机列表不包含某些重定向的打印机

Delphi 打印机。打印机列表不包含某些重定向的打印机,delphi,winapi,printers,Delphi,Winapi,Printers,如果连接到终端服务器,当使用Delphi XE2编写的测试程序时,printer.Printers集合中的打印机名称列表与使用TPrintDialog时显示的打印机列表不同 一些重定向的打印机同时显示在这两个对话框中,但“打印”对话框中还包含3个已重定向的本地打印机 我试着查看Vcl.Dialogs中的代码,以查看打印对话框从何处获得打印机列表,但没有乐趣 我也尝试过直接给EnumPrinters打电话,但我得到了同样的结果,这并不奇怪 如果我通过控制面板查看打印机,我如何确保我可以在我的Del

如果连接到终端服务器,当使用Delphi XE2编写的测试程序时,printer.Printers集合中的打印机名称列表与使用TPrintDialog时显示的打印机列表不同

一些重定向的打印机同时显示在这两个对话框中,但“打印”对话框中还包含3个已重定向的本地打印机

我试着查看Vcl.Dialogs中的代码,以查看打印对话框从何处获得打印机列表,但没有乐趣

我也尝试过直接给EnumPrinters打电话,但我得到了同样的结果,这并不奇怪


如果我通过控制面板查看打印机,我如何确保我可以在我的Delphi代码中获得相同的打印机列表-本地/网络/重定向?

可能相关:这是系统对话框,没有它的源代码。我建议您通过重新搜索
EnumPrinters
或编辑标签来吸引
[winapi]
客户。据我记忆所及,整个打印机重定向问题存在很多问题。在获取打印机列表之前,您是否尝试过调用“printer.Refresh”?它显然与Server 2008及以后版本中包含的轻松打印服务有关,TS将尝试使用EP安装重定向打印机驱动程序,如果失败,查找本地安装的驱动程序。如果找不到其中一个,它也不会包括本地打印机。但是,这并不能解释为什么某些获取打印机列表的方法会给出不同的结果。@Jan我使用了2601037的代码变体来获取打印机列表(尽管XE2没有_PRINTER_INFO_2A,只有_PRINTER_INFO_2)。调用EnumPrinters并获得结果很好。问题是返回的打印机列表不正确。至于23301795,该程序是作为RemoteApp启动的,他们有一段时间没有安装任何新的本地打印机。