Печать из 16-ти разрядного приложения

У заказчика установлена система управления предприятием, в которой используется 16-ти разрядный клиент, написанный на языке Clipper. Наибольшая сложность, которая возникает при эксплуатации данного приложения – печать на современные принтеры. И вот, прослуживший много лет верой и правдой принтер постарел. Вместо него был куплен принтер HP LaserJet P3015dn. Запуск печати из приложения продемонстрировал ошибку подсистемы MS-DOS:

Ошибка 16-ти разрядной подсистемы при вызове печати
Ошибка 16-ти разрядной подсистемы

Проблема была решена с помощью установки принтера на сервер с Windows Server 2003 R2 x64 и дополнительных драйверов для [устаревших] 32-х разрядных систем.

1. Решение

В документации подробно описано, как выполнить первичную настройку. Поэтому предположим, что необходимые сетевые и прочие настройки принтера уже указаны; принтер включен и видим по адресу 192.168.1.1. На сервере PrintServer1 с Windows Server 2003 R2 x64 запускаем диск с программным обеспечением принтера. Данная модель поддерживает печать в формате PCL и PS. Для нашей цели достаточно формат PCL. Выбираем установку PCL 6 драйвера, читаем и соглашаемся с лицензионным соглашением, указываем IP-адрес или имя принтера, и устанавливаем драйвер. Затем принтер появится в перечне установленных принтеров.

Выбор дополнительных настроек утилиты установки
Выбор дополнительных настроек
Установка драйвера PCL 6
Установка драйвера PCL 6
Поиск устройства в сети
Поиск устройства в сети
Завершающая страница утилиты установки
Завершающая страница

Теперь нужно сделать общий доступ к принтеру и добавить драйвера для 32-х разрядных систем Windows 2000, Windows XP и Windows Server 2003. После подтверждения действия система запросит путь к драйверам, на что указываем CD-ROM:\Drivers\i386(32 bit - 2000_XP_S2003_Vista)\PCL6.

Список установленных принтеров
Список установленных принтеров
Общий доступ к принтеру
Общий доступ к принтеру
Выбор дополнтельных драйверов
Выбор дополнтельных драйверов
Выбор файлов для установки драйверов
Выбор файлов для установки драйверов

После этого на клиентских станциях с Windows 7 Enterprise x32 подключаем установленный принтер с помощью команды
net use lpt2: \\PrintServer1\HPLaserJet3010PCL /PERSISTENT:YES
В приложении указываем, что принтер подключен к порту LPT2, и все, печать успешно заработала.

2. Воспроизведение ошибки

Выполним аналогичные действия, но установим принтер на административном компьютере с Windows 7 Enterprise x64. Окошко с дополнительными драйверами содержит единственный пункт 32-х разрядных драйверов.

Выбор дополнтельных драйверов на Windows 7
Выбор дополнтельных драйверов на Windows 7

Печать на установленный таким образом сервер генерирует ошибку подсистемы MS-DOS.

На следующий день после написания заметки установил сетевой принтер на сервере с установленной Windows Server 2008 R2 x64. На удивление, печать из 16-ти разрядных приложений выполнилась успешно. Кто говорил про необходимость бубна? 😉

3. Решение подходит не для всех принтеров

К сожалению, не со всеми принтерами компании-производителя (в нашем случае Hewlett-Packard) проходит данный сценарий. Например, утилита установки принтера HP LaserJet CP1525 вообще отказалась устанавливаться на Windows Server 2003 R2.

Ошибка установки принтера CP1525 на Windows Server 2003
Ошибка установки принтера CP1525


1. Все используемые IP-адреса, имена серверов, компьютеров, доменов, пользователей, являются фиктивными и используются исключительно в демонстрационных целях.
2. Информация приводится «AS IS».

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s