powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как различить какой вид дуплексной печати поддерживает принтер: ручной или автоматический?
24 сообщений из 24, страница 1 из 1
Как различить какой вид дуплексной печати поддерживает принтер: ручной или автоматический?
    #39930669
Dimitry Timokhov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приветствую!

1. Как определить, есть ли вообще возможность дуплексной печати, я знаю.
Когда-то скопипастил из интернета что-то типа такого:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
function IsDuplexSupported: Boolean;
var
   kDevice: array[0..1023] of Char;
   kDriver: array[0..1023] of Char;
   kPort: array[0..1023] of Char;
   kDeviceMode: THandle;
   kResult: Integer;
begin
   Printer.GetPrinter(kDevice, kDriver, kPort, kDeviceMode);
   kResult := WinSpool.DeviceCapabilities(kDevice, kPort, DC_DUPLEX, nil, nil);
   ...
   Result := kResult = 1;
end;



2. Как теперь понять, какой именно вид дуплексной печати поддерживается: ручной (когда надо самому бумажку перекладывать) или автоматический (когда принтер сам обратно бумажку засасывает)?

Спасибо!
...
Рейтинг: 0 / 0
Как различить какой вид дуплексной печати поддерживает принтер: ручной или автоматический?
    #39933993
Dimitry Timokhov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Timokhov,

Удивительно, но интернет не знает ответ на мой вопрос.
Даже ребята с стековерфлоу не знают https://stackoverflow.com/questions/60496972/printer-duplex-printing-manual-vs-auto-how-to-detect-programmatically

Но MS Word то как-то это делает! Он же умеет понимать какой дуплекс - ручной или автоматический.

Ладно, буду копать.
...
Рейтинг: 0 / 0
Как различить какой вид дуплексной печати поддерживает принтер: ручной или автоматический?
    #39934006
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Timokhov> Но MS Word то как-то это делает! Он же умеет
Dimitry Timokhov> понимать какой дуплекс - ручной или автоматический.

А он точно это умеет ?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как различить какой вид дуплексной печати поддерживает принтер: ручной или автоматический?
    #39934108
Фотография AndyMandy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Отрыл старый компонент, может вам поможет.
...
Рейтинг: 0 / 0
Как различить какой вид дуплексной печати поддерживает принтер: ручной или автоматический?
    #39934433
Dimitry Timokhov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гаджимурадов Рустам,

Точно.
Где есть только ручной дуплекс, показывает два варианта:
а. Односторонняя печать.
б. Печать вручную с обеих сторон.
Где есть автоматический дуплекс, показывает варианты:
а. Односторонняя печать.
б. Print on Both sides/Flip pages on long edge
в. Print on Both sides/Flip pages on short edge
г. Печать вручную с обеих сторон.
Т.е. умеет различать возможности принтера.
...
Рейтинг: 0 / 0
Как различить какой вид дуплексной печати поддерживает принтер: ручной или автоматический?
    #39934445
Dimitry Timokhov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndyMandy,

Спасибо.
Но, к сожалению, это аналог моего кода - т.е. Вы устанавливаете дуплекс. Но не анализируете возможности дуплекса.

Я думаю, что разработчики Word могут себе позволить реализовать эвристический анализ.
Например, знать все принтеры мира, и на основе имени принтера определять возможности дуплекса - ручной или автоматический.

Возможно напрямую в драйвер лазят как-то. Не компетентен, возможно ли это.

Похоже, что легального способа получения информации через WinAPI мир не знает.

В общем сделаю так: не буду анализировать дуплекс, буду предлагать варианты дуплекса, как будто есть автоматический дуплекс. Пользователь сам разберется.
...
Рейтинг: 0 / 0
Как различить какой вид дуплексной печати поддерживает принтер: ручной или автоматический?
    #39934774
Фотография AndyMandy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наверно Ваш путь самый правильный.
Слазил ради интереса в FastReport в реализацию окна печати, так там тоже тупо вызывается DeviceCapabilitiesW и возвращается fwCapability.
...
Рейтинг: 0 / 0
Как различить какой вид дуплексной печати поддерживает принтер: ручной или автоматический?
    #39934944
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Timokhov
Где есть только ручной дуплекс, показывает два варианта:
а. Односторонняя печать.
б. Печать вручную с обеих сторон.
Эээ.. а чем это отличается от отсутствия дуплекса? И первый и второй пункт - как раз подходят для принтера где модуля дуплекса тупо нет
...
Рейтинг: 0 / 0
Как различить какой вид дуплексной печати поддерживает принтер: ручной или автоматический?
    #39934979
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Timokhov
Похоже, что легального способа получения информации через WinAPI мир не знает.
Да, похоже слабо документировано. Хотя в .Net есть и в WMI есть...
DC_DUPLEX значения 2 и 3 точно никогда не возвращает ?
...
Рейтинг: 0 / 0
Как различить какой вид дуплексной печати поддерживает принтер: ручной или автоматический?
    #39934995
Dimitry Timokhov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гаджимурадов Рустам,

1. Даже если и возвращает (не пробовал, хотя идея интересная), то всё равно - это недокументированная возможность, согласно:

DC_DUPLEX
If the printer supports duplex printing, the return value is 1 ; otherwise, the return value is zero. The pOutput parameter is not used.

отсюда https://docs.microsoft.com/en-us/windows/win32/api/wingdi/nf-wingdi-devicecapabilitiesa

2. Рустам, почему, думаете, 2 и 3 могут вообще возвращаться?

3. Что Вы имеете в виду, говоря, что "Хотя в .Net есть и в WMI есть..."?
...
Рейтинг: 0 / 0
Как различить какой вид дуплексной печати поддерживает принтер: ручной или автоматический?
    #39934996
Dimitry Timokhov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
white_nigger,

Ну, "Печать вручную с обеих сторон", это когда при печати выводится окошечко (кем-то, не мною) - переложите лист в другой лоток и нажми галочку. Возможно любой принтер так может, не знаю.
...
Рейтинг: 0 / 0
Как различить какой вид дуплексной печати поддерживает принтер: ручной или автоматический?
    #39934998
Dimitry Timokhov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да... я не одинок в своих вопросах.
http://rsdn.org/forum/winapi/672417.1
16 лет прошло и нет ответа по сути.

Похоже, что все же легально (через WinAPI) решить вопрос нельзя.
...
Рейтинг: 0 / 0
Как различить какой вид дуплексной печати поддерживает принтер: ручной или автоматический?
    #39935057
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Timokhov> всё равно - это недокументированная возможность

Да, конечно, это было просто предположение (проверить мне всё равно не на чем).
Я бы попробовал проверять не DevCap, а DevMode - там есть соотв. параметры:
https://docs.microsoft.com/en-us/windows/win32/api/wingdi/ns-wingdi-devmodea
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как различить какой вид дуплексной печати поддерживает принтер: ручной или автоматический?
    #39935235
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
white_nigger
Эээ.. а чем это отличается от отсутствия дуплекса?
Страницы автоматически печатаются через одну. После печати с одной стороны принтер приостанавливает работу и ожидает, когда ему подсунут перевернутые напечатанные листы.
...
Рейтинг: 0 / 0
Как различить какой вид дуплексной печати поддерживает принтер: ручной или автоматический?
    #39935328
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_
Страницы автоматически печатаются через одну. После печати с одной стороны принтер приостанавливает работу и ожидает, когда ему подсунут перевернутые напечатанные листы.
Так это и без дуплекса принтер может - зависит от ПО/драйверов поставляемых с ним
...
Рейтинг: 0 / 0
Как различить какой вид дуплексной печати поддерживает принтер: ручной или автоматический?
    #39935329
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Надо на своем стареньком домашнем фотопринтере Pixma iP6600D поэкспериментировать. Я, к своему стыду, только на втором или третьем году эксплуатации узнал что он поддерживает двухстороннюю печать - думал что блок дуплекса надо отдельно докупать
...
Рейтинг: 0 / 0
Как различить какой вид дуплексной печати поддерживает принтер: ручной или автоматический?
    #39935351
Dimitry Timokhov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Коллеги, извиняйте.
Походу, я не прав.

1. Мой принтер таки поддерживает дуплекс, если поставить в настройках принтера в Панели управления. Да, выводит окошечко - типа страничку переложи. Я почему-то думал, что это и есть дуплекс. Это не дуплекс!
Ибо WinSpool.DeviceCapabilities(kDevice, kPort, DC_DUPLEX, nil, nil) возвращает 0!
Я реально забыл это проверить - думал, что галка в настройках сама собой даёт 1 для вызова WinSpool.DeviceCapabilities для DC_DUPLEX.
И этот дуплекс, который не дуплекс, я называл ручным.

2. А вот 1 вызов WinSpool.DeviceCapabilities для DC_DUPLEX возвращает именно на тех принтерах, где есть настоящий дуплекс, с засасыванием страницы обратно.

3. Вывод простой (но еще надо проверить у клиентов, у которых принтера как а/м стоят).
Если вызов WinSpool.DeviceCapabilities для DC_DUPLEX возвращает 1, то это и есть автоматический дуплекс.

4. Насчёт Word, который типа умеет различать ручной и автоматический дуплекс, то все просто. Т.н. ручной дуплекс просто Word делает сам программно. И Word предлагает ручной дуплекс вообще для любого принтера (т.к. реализация программная). А вот варианты автодуплекса с прошивкой по длинному или короткому краю Word предлагает для тех принтеров, которые при вызове WinSpool.DeviceCapabilities для DC_DUPLEX возвращают 1.

В общем, еще раз извиняйте.
Перемудрил я.
...
Рейтинг: 0 / 0
Как различить какой вид дуплексной печати поддерживает принтер: ручной или автоматический?
    #39935366
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Timokhov
4. Насчёт Word, который типа умеет различать ручной и автоматический дуплекс, то все просто. А вот варианты автодуплекса с прошивкой по длинному или короткому краю Word предлагает для тех принтеров, которые при вызове WinSpool.DeviceCapabilities для DC_DUPLEX возвращают 1.
Вы всё же проверьте devmode - упомянутые

б. Print on Both sides/Flip pages on long edge
в. Print on Both sides/Flip pages on short edge

как раз оттуда и берутся, AFAIU.
...
Рейтинг: 0 / 0
Как различить какой вид дуплексной печати поддерживает принтер: ручной или автоматический?
    #39935404
Dimitry Timokhov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гаджимурадов Рустам,

Рустам, я не до конца понимаю, что имеется в виду.

Если речь про это:
авторdmDuplex
Selects duplex or double-sided printing for printers capable of duplex printing. Following are the possible values.
TABLE 5
Value Meaning
DMDUP_SIMPLEX Normal (nonduplex) printing.
DMDUP_HORIZONTAL Short-edge binding, that is, the long edge of the page is horizontal.
DMDUP_VERTICAL Long-edge binding, that is, the long edge of the page is vertical.

отсюда https://docs.microsoft.com/en-us/windows/win32/api/wingdi/ns-wingdi-devmodea, то это, как я понял, для установки режима, а не проверки возможностей.

Или я не прав?
...
Рейтинг: 0 / 0
Как различить какой вид дуплексной печати поддерживает принтер: ручной или автоматический?
    #39935426
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Timokhov
Или я не прав?
Прав. Специально посмотрел в исходниках винды 2000 - там в диалоге эти опции появляются если дуплекс есть. Без всяких дополнительных проверок. Тонкости могут быть на уровне драйверов производителей
...
Рейтинг: 0 / 0
Как различить какой вид дуплексной печати поддерживает принтер: ручной или автоматический?
    #39935540
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Timokhov> то это, как я понял, для установки режима, а не проверки возможностей.

Режим (параметры) можно же не только задать, но и получить текущий.
https://docs.microsoft.com/en-us/windows/win32/printdocs/documentproperties

white_nigger> эти опции появляются если дуплекс есть.
white_nigger> Без всяких дополнительных проверок.
white_nigger> Тонкости могут быть на уровне драйверов производителей


Наверное, драйвера и устанавливают.
А ты какую конкретно функцию смотрел?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как различить какой вид дуплексной печати поддерживает принтер: ручной или автоматический?
    #39937614
Dimitry Timokhov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
white_nigger,

1. Я тоже пришел к выводу, что если есть дуплекс, то он есть автоматический и баста.
2. Звучит круто про "посмотрел в исходниках винды 2000"))) Я так не умею)

---
Всем спасибо!
...
Рейтинг: 0 / 0
Как различить какой вид дуплексной печати поддерживает принтер: ручной или автоматический?
    #39937661
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Timokhov
white_nigger,
2. Звучит круто про "посмотрел в исходниках винды 2000"))) Я так не умею)

Они же слиты в сеть и гуляют там.. Можно скачать изучать)))
...
Рейтинг: 0 / 0
Как различить какой вид дуплексной печати поддерживает принтер: ручной или автоматический?
    #39937674
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X-Cite
Они же слиты в сеть и гуляют там.. Можно скачать изучать)))
Именно так)) Конкретно диалог настройки печати
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как различить какой вид дуплексной печати поддерживает принтер: ручной или автоматический?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]