DeviceCapabilities
VB声明
Declare Function DeviceCapabilities Lib "winspool.drv" Alias "DeviceCapabilitiesA" (ByVal lpDeviceName As String, ByVal lpPort As String, ByVal iIndex As Long, ByVal lpOutput As String, lpDevMode As DEVMODE) As Long
说明
利用这个函数可获得与一个设备的能力有关的信息
返回值
Long,由iIndex参数的值决定,请参考设备能力常数表。如函数执行失败,或打印机的驱动程序不支持这个函数,那么函数就会返回-1
参数表
参数 类型及说明
lpDeviceName String,设备名
lpPort String,指定连接了指定设备的那个端口
iIndex Long,欲测试的能力。请参考设备能力常数表,其中列出了可选的值
lpOutput String,指定一个缓冲区的地址,能力数据会装载到这个缓冲区中。在设备能力常数表中,针对每个fwCapabilities值的缓冲区的内容都进行了总结。这个表格同时总结了应将参数设为vbNullString的一些情况
lpDevMode DEVMODE,一个DEVMODE结构的地址,或者为零。如指定了那个结构,函数会根据这个结构的设置来接收信息。如果为零,函数就会根据打印机驱动程序的默认值接收信息
注解

使用lpOutput时要注意:在许多时候,这个函数会返回一系列名称的列表。例如,假设将fwCapabilities标志设为DC_PAPERNAMES,那么就会得到一系列支持的纸张尺寸的名字。在这种情况下,lpOutput缓冲区应该是一个String变量,而且根据设备能力常数表的总结预先初始化成合适的长度。函数会在缓冲区中载入所有名称,而且每个名称在字串中都占用固定的空间。所以,我们完全能用Mid函数提取出每一个条目。
某些情况下,lpOutput需要指向一个数值数组的指针

设备能力常数表
fwCapabilities 说明
DC_BINADJUST 返回来自API32.TXT的某个常数。它应带有 DCBA_ 前缀,用于指定当前纸张源的正确纸张方向。仅适用于Win95
DC_BINNAMES 如lpOutput为零,就返回由打印机支持的纸匣数量。否则,lpOutput应指向一个缓冲区(长度至少为24×纸匣数)。每24个字节都会保存一个纸匣的NULL中止名称
DC_BINS 如lpOutput为零,就返回由打印机支持的纸匣数量。否则,lpOutput应指向一个整数数组(长度至少为纸匣数量)。这些值对应于为DEVMODE结构定义的 DMBIN_??? 常数
DC_COPIES 返回打印机能够打印的最大副本数量
DC_DATATYPE_PRODUCED 接收由打印机支持的一系列数据类型。这些类型可作为由StartDoc函数使用的DOCINFO结构的输出数据类型提供。如这个函数返回-1,那么支持的唯一数据类型就是 RAW 。仅适用于Win95
DC_DRIVER 返回打印机驱动程序的版本号
DC_DUPLEX 如打印机有双面打印功能,就返回1;否则返回0
DC_EMF_COMPLIANT 如打印机能直接支持增强型图元文件,就返回TRUE。仅适用于Win95
DC_ENUMRESOLUTIONS 如lpOutput为零,就返回由打印机支持的分辨率数量。否则,lpOutput应该是一个指向Long型数组的指针。该数组至少应包含(2×分辨率数量)个条目。每对条目都反映出水平和垂直分辨率(以每英寸的点数——dpi——为单位)
DC_EXTRA 返回与具体设备有关的特殊字节,它们要为这个设备追加到DEVMODE结构后面
DC_FIELDS 针对设备默认的DEVMODE数据结构,返回dmFields字段的值
DC_FILEDEPENDENCIES 如lpOutput为零,就返回打印机驱动程序要求的文件数量。否则,lpOutput应指向一个至少有(64×文件数)个字节的缓冲区。每64个字节都会保存一个请求文件的NULL中止名称
DC_MAXEXTENT 返回一个Long型值,其中包含打印机支持的最大纸张长度和宽度。其中,低字(16位)包含的是宽度数据。它们是由dmPaperWidth 和 dmPaperLength这两个DEVMODE字段的最大值
DC_MINEXTENT 返回一个Long型值,其中包含打印机支持的最小纸张长度和宽度。其中,低字(16位)包含的是宽度数据。它们是由dmPaperWidth 和 dmPaperLength这两个DEVMODE字段的最大值
DC_ORIENTATION 返回横向模式和纵向模式间的旋转度数。如果是零,表示驱动程序不支持横向打印模式。对于激光打印机,90度是最常见的一个设置;而对于点阵式打印机,一般都是270度
DC_PAPERNAMES 如lpOutput为零,就返回由打印机支持的纸张尺寸数量。否则,lpOutput就应指向一个缓冲区(长度至少为64×纸张尺寸种数)。每64个字节都会装载一种支持的纸张尺寸的空中止名称
DC_PAPERS 如lpOutput为零,就返回由打印机支持的纸张尺寸数量。否则,lpOutput就应指向一个整数数组(长度至少为纸张的尺寸种数)。值对应于为DEVMODE结构定义的 DMPAPER_??? 常数
DC_SIZE 返回打印机DEVMODE数据结构的dmSize字段
DC_TRUETYPE 下述常数之一:
DCTT_BITMAP 设备能将TrueType字体当作图形打印
DCTT_DOWNLOAD 设备能下载TrueType字体
DCTT_OUTLINE 设备能下载轮廓型TrueType字体
DCTT_SUBDEV 设备能取代与对应的TrueType字体兼容的内建字体
DC_VERSION 返回设备驱动程序的规格版本号

Top