Declare Function DeviceCapabilities Lib "winspool.drv" Alias "DeviceCapabilitiesA" ( _ ByVal pDeviceName As String, _ ByVal pPort As String, _ ByVal fwCapability As Long, _ pOutput As Any, _ pDevMode As Any) As Long
DeviceCapabilities показывает возможности драйвера принтера
В успешном случае возвращаемое значение зависит от настройки параметра fwCapability. Возвращаемое значение равное нулю указывает на успешным вызов функции, но при этом был некоторый тип отказа. В случае ошибки возвращается -1 (минус один).
DC_BINNAMES | Извлекает названия магазинов бумагоподающего устройства принтера. Буфер pOutput принимает массив строковых буферов. Каждый строковый буфер -длиной 24 символа и содержит название магазина бумагоподающего устройства. Возвращаемое значение обозначает число записей в массиве. Строки названия с нулевым символом в конце, если название не длиннее 24 символов. Если pOutput - ПУСТО (NULL), возвращаемое значение - число обязательных записей лотка |
DC_BINS | Извлекает перечень доступных магазинов бумагоподающего устройства. Буфер pOutput принимает массив значений типа (WORD), которые указывают доступные источники бумаги для принтера. Возвращаемое значение обозначает число записей в массиве. Список возможных значений массива, см. в описании члена dmDefaultSource структуры DEVMODE. Если pOutput - ПУСТО (NULL), возвращаемое значение указывает обязательное число записей в массиве. |
DC_COLLATE | Если принтер поддерживает сортировку, возвращаемое значение равно 1; в противном случае, величина возвращаемого значения - ноль. Параметр pOutput не используется. |
DC_COLORDEVICE | Если принтер поддерживает цветную печать, возвращаемое значение равно 1; в противном случае, величина возвращаемого значения - ноль. Параметр pOutput не используется. |
DC_COPIES | Возвращает количество копий, которое устройство может отпечатать. |
DC_DRIVER | Возвращает номер версии драйвера принтера. |
DC_DUPLEX | Если принтер поддерживает двустороннюю печать, возвращаемое значение равно 1; в противном случае, величина возвращаемого значения - ноль. Параметр pOutput не используется. |
DC_ENUMRESOLUTIONS | Извлекает перечень разрешающих способностей, поддерживаемых принтером. Буфер pOutput принимает массив значений типа LONG. Для каждой поддерживаемой разрешающей способности, массив содержит пару значений LONG, которые задают x и y размеры разрешающей способности, в точках на дюйм. Возвращаемое значение обозначает число поддерживаемых разрешающих способностей. Если pOutput - ПУСТО (NULL), возвращаемое значение обозначает число поддерживаемых разрешающих способностей. |
DC_EXTRA | Возвращает число байтов, обязательных для зависимой от устройства части структуры DEVMODE для драйвера принтера. |
DC_FIELDS | Возвращает член dmFields структуры DEVMODE драйвера принтера. Член dmFields указывает, какие члены в аппаратно-независимой части структуры поддерживаются драйвером принтера. |
DC_FILEDEPENDENCIES | Извлекает имена любых дополнительных файлов, которые должны быть загружены, когда драйвер установлен. Буфер pOutput принимает массив строковых буферов. Каждый строковый буфер - длиной 64 символа и содержит имя файла. Возвращаемое значение обозначает число записей в массиве. Если имя файла меньше 64 символов, строки имени с нулем в конце. Если pOutput - ПУСТО (NULL), возвращаемое значение - число файлов. |
DC_MAXEXTENT | Возвращает максимальный формат бумаги, который драйвер принтера может установить в членах dmPaperLength и dmPaperWidth структуры DEVMODE. LOWORD (младшее слово) возвращаемого значения содержит максимальное значение dmPaperWidth, а HIWORD (старшее слово) содержит максимальное значение dmPaperLength. |
DC_MEDIAREADY | Извлекает названия форматов бумаги, которые являются текущими доступными для использования. Буфер pOutput принимает массив строковых буферов. Каждый строковый буфер - длиною 64 символа и содержит название формата бумаги. Возвращаемое значение обозначает число записей в массиве. Если строки названия - меньше 64 символов, строки с нулем в конце. Если pOutput - ПУСТО (NULL), возвращаемое значение - число форматов бумаги. |
DC_MEDIATYPENAMES | Извлекает названия поддерживаемых типов медиа. Буфер pOutput принимает массив строковых буферов. Каждый строковый буфер - длиной 64 символа и содержит название поддерживаемого типа медиа. Возвращаемое значение обозначает число записей в массиве. Если pOutput - ПУСТО (NULL), возвращаемое значение - число обязательных названий типов аудио- и видео средств информации. |
DC_MEDIATYPES | Извлекает перечень типов поддерживаемых аудио- и видео средств информации. Буфер pOutput принимает массив значений типа DWORD, которые обозначают поддерживаемые типы аудио- и видео средств информации. Возвращаемое значение обозначает число записей в массиве. Список возможных значений массива, см. в описании члена dmMediaTyp структуры DEVMODE. Если pOutput - ПУСТО (NULL), возвращаемое значение указывает обязательное число записей в массиве. |
DC_MINEXTENT | Возвращает минимальный размер бумаги, который драйвер принтера может установить в членах dmPaperLength и dmPaperWidth структуры DEVMODE. LOWORD (младшее слово) возвращаемого значения содержит минимальное значение dmPaperWidth , а HIWORD (старшее слово) содержит минимальное значение dmPaperLength. |
DC_ORIENTATION | Возвращает соотношение между книжной и альбомной ориентациями для устройства, на основе числа градусов, где вертикальная (книжная) ориентация перемещается по кругу против часовой стрелки, чтобы перейти в горизонтальную (альбомную) ориентацию. Возвращаемое значение может быть одним из ниже следующих: 0 Не горизонтальная (альбомная) ориентация. 90 Книжная повернута на 90 градусов, чтобы перейти в альбомную ориентацию. 270 Книжная повернута на 270 градусов, чтобы перейти в альбомную ориентацию. |
DC_NUP | Извлекает массив целых чисел, которые обозначают, что принтер способен печатать несколько страниц документа на печатную полосу. Буфер pOutput принимает массив значений типа DWORD. Каждое значение обозначает поддерживаемое число страниц документа в печатаной полосе. Возвращаемое значение обозначает число записей в массиве. Если pOutput - ПУСТО (NULL), возвращаемое значение указывает обязательное число записей в массиве. |
DC_PAPERNAMES | Извлекает перечень поддерживаемых названий бумаги (например, Letter (Письмо) или Legal (Официальный документ). Буфер pOutput принимает массив строковых буферов. Каждый строковый буфер - длиной 64 символа и содержит название формата бумаги. Возвращаемое значение обозначает номер записей в массиве. Если pOutput - ПУСТО (NULL), возвращаемое значение - число форматов бумаги. |
DC_PAPERS = 2 | Извлекает перечень поддерживаемых размеров бумаги. Буфер pOutput принимает массив значений типа WORD, которые обозначают доступные размеры бумаги для принтера. Возвращаемое значение обозначает число записей в массиве. Список возможных значений массива, см. в описании члена dmPaperSize структуры DEVMODE. Если pOutput - ПУСТО (NULL), возвращаемое значение обозначает обязательное число записей в массиве. |
DC_PAPERSIZE | Извлекает размеры, в десятых долях миллиметра, каждого поддерживаемого размера бумаги. Буфер pOutput принимает массив структур POINT. Каждая структура содержит ширину (в направлении оси x) и длину (в направлении оси y) размера бумаги, как будто бы бумага ориентации DMORIENT_PORTRAIT. Возвращаемое значение обозначает число записей в массиве. |
DC_PERSONALITY | Извлекает перечень языков написания, поддерживаемых принтером. Буфер pOutput принимает массив строковых буферов. Каждый буфер - длиной 32 символа и содержит название языка, которым пишет принтер. Возвращаемое значение обозначает число записей в массиве. Если pOutput - ПУСТО (NULL), возвращаемое значение обозначает обязательное число записей массива. |
DC_PRINTERMEM = 28 | Возвращаемое значение - объем доступной памяти принтера, в килобайтах. Параметр pOutput не используется. |
DC_PRINTRATE | Возвращаемое значение указывает скорость печати принтера. Значение, возвращенное для DC_PRINTRATEUNIT обозначает единицы измерения значения DC_PRINTRATE. Параметр pOutput не используется. |
DC_PRINTRATEPPM | Возвращаемое значение указывает скорость печати принтера, в страницах в минуту. Параметр pOutput не используется. |
DC_PRINTRATEUNIT | Возвращаемое значение - одно из ниже перечисленных значений, которые указывают единицы измерения скорости печати для значений, возвращаемых флажком DC_PRINTRATE. Параметр pOutput не используется. PRINTRATEUNIT_CPS Символов в минуту. PRINTRATEUNIT_IPM Дюймов в минуту. PRINTRATEUNIT_LPM Строк в минуту. PRINTRATEUNIT_PPM Страниц в минуту. |
DC_SIZE | Возвращает член dmSize структуры DEVMODE драйвера принтера. |
DC_STAPLE | Если принтер поддерживает сшивание страниц скобками, возвращаемое значение - не нуль; в противном случае, величина возвращаемого значения - ноль. Параметр pOutput не используется. |
DC_TRUETYPE | Извлекает данные о способности драйвера использовать шрифты TrueType. Для DC_TRUETYPE, параметр pOutput должен быть ПУСТО (NULL). Возвращаемое значение может быть одно или несколько ниже следующих значений: DCTT_BITMAP - Устройство может печатать шрифты TrueType как графику. DCTT_DOWNLOAD - Устройство может загрузить шрифты TrueType. DCTT_SUBDEV - Устройство может заменить шрифты устройства на шрифт TrueType. |
DC_VERSION | Возвращает версию спецификации, которой соответствует драйвер принтера.
Dim Ret As Long, PaperSizes() As Integer
Ret = DeviceCapabilities(Printer.DeviceName, "DOT4_002", DC_PAPERS, ByVal 0&, ByVal 0&)
ReDim PaperSizes(1 To Ret) As Integer
Call DeviceCapabilities(Printer.DeviceName, "DOT4_002", DC_PAPERS, PaperSizes(1), ByVal 0&)
Me.AutoRedraw = True
Me.Print "Поддерживаемые размеры:"
Dim Cnt As Long
For Cnt = 1 To Ret
Me.Print Str$(PaperSizes(Cnt))
Next
' Объем памяти
Ret = DeviceCapabilities(Printer.DeviceName, "DOT4_002", DC_PRINTERMEM, PaperSizes(1), ByVal 0&)
Print Ret