Skip to content

Printers 类

Printers对象是系统上安装的所有打印机的只读集合。它通过隐式Printers全局对象公开——没有用户可调用的构造函数——并为每个设备产生一个Printer,以DeviceName为键。使用它枚举已安装的设备,或通过Set Printer = Printers(name)切换活动打印机。

vb
Dim p As Printer
For Each p In Printers
    Debug.Print p.DeviceName, p.DriverName, p.Port
Next

Set Printer = Printers("HP LaserJet")    ' 将此设为活动打印机

集合包含的内容

每个条目是绑定到相应设备的Printer。这些实例是不可变描述符——用于标识和传递给Set Printer = …,而不是直接运行打印作业。对其任何设置属性赋值会引发运行时错误383(属性为只读);调用EndDocKillDocNewPagePrint或其他文档控制方法会引发运行时错误438(对象不支持此属性或方法)。TrackDefault在这些实例上始终为False

在多个端口上公告单个设备的驱动程序会为每个端口产生一个Printer条目;只有第一个条目以DeviceName为键,其余只能通过数字索引访问。

实时枚举

此集合不被缓存。每次调用CountItemFor Each都会从Windows注册表的配置文件部分重新读取系统的已安装打印机列表,并重建一批新的Printer实例。因此,在设置→打印机中添加或移除的打印机会在下次访问集合时出现,无需从代码刷新。代价是连续访问并不廉价——枚举时,如果需要大量查找,请缓存结果:

vb
Dim snapshot As Variant : snapshot = Array()      ' 或使用Collection
For Each p In Printers
    snapshot = Array(snapshot, p.DeviceName)      ' (示意)
Next

索引

数字索引是从0开始的,与大多数VB6集合从1开始不同。第一个已安装的打印机是Printers(0);最后一个是Printers(Printers.Count - 1)。超出此范围的索引会引发运行时错误9(下标越范围)。

字符串索引按DeviceName查找——twinBASIC新增;VB6的Printers仅支持数字访问。不存在的名称会引发底层集合的运行时错误5(无效的过程调用或参数)。

属性

Count

已安装打印机条目的数量。Long,只读。每次访问时重新计数——参见实时枚举

语法:object.Count

Item

返回给定索引处的Printer默认属性——Printers(0)Printers.Item(0)的简写。

语法:object.Item( Index ) As Printer

Index
必需 Variant。作为Long,集合中从0开始的位置(0Count - 1);超出范围的值引发运行时错误9。作为String,打印机的DeviceName;未知名称引发运行时错误5。

另见

  • Printer -- 打印机对象本身以及隐式Printer全局对象。

twinBASIC及其LOGO版权为作者"韦恩"所有