DeviceCapabilities

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