如何在 VB 中创建打印机对象

Posted

技术标签:

【中文标题】如何在 VB 中创建打印机对象【英文标题】:How to create a Printer object in VB 【发布时间】:2016-11-16 13:11:39 【问题描述】:

在创建打印机对象时,我在 VB 6 中遇到了问题。 基本上,我需要创建一个打印机对象,以便我可以设置需要执行打印的正确托盘。

我有打印机名称。

我能在网上找到的所有代码都涉及遍历所有可用的打印机并找到与我们的打印机名称匹配的内容。

有没有一种方法可以直接从打印机名称创建打印机对象 prn

任何帮助将不胜感激。

【问题讨论】:

VB 6 或 VBA - 它是哪一个 如果您指的是 IDE,那就是 VB 6。 那么为什么要使用 VBA 标签? @PankajJaju ***.com/questions/993300/… 它们可能相似但不完全相同。它们的用法非常不同。 【参考方案1】:

你不能。 VB6 打印机集合只能通过索引而不是名称访问。见Visual Studio 6 Printer Object, Printers Collection。

因此,您必须在集合中搜索您想要的打印机。例如:

Private Function FindPrinter(PrinterName As String) As Printer
  Dim i As Integer
  For i = 0 To Printers.Count - 1
    If Printers(i).DeviceName = PrinterName Then
      Set FindPrinter = Printers(i)
      Exit For
    End If
  Next i
  Exit Function
End Function

以上内容不处理您要查找的打印机不在集合中的情况。您需要添加逻辑来涵盖该条件 - 您想要做的是特定于您的特定任务和要求。此示例也是区分大小写的名称搜索,因此请记住这一点。

【讨论】:

感谢您的回复。您提到的代码是我目前在我的应用程序中使用的代码。但是,当有大量打印机 (2500+) 时,这往往会变得非常慢。所以一直在寻找解决方法。 除非您要切换打印机,否则您当然不需要每次都搜索打印机集合。在应用程序启动(或用户选择等)时搜索它,然后保留对您正在使用的打印机对象的引用。然后很少担心搜索打印机集合的性能。

以上是关于如何在 VB 中创建打印机对象的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 PHP 中的程序在打印机中创建文档文件的打印?

如何仅打印在python中创建异常的值?

如何在 Java 中创建要打印到 JFrame 的 JLabels 数组

试图从一个 np 数组中创建一个可读的 txt 文件,全部打印在一行上?

如何使在 ddply 中创建的对象在函数外部可用(在全局环境中)?

在 Access 2013 中创建用于打印报表的 UI