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 |
返回设备驱动程序的规格版本号 |