Что такое windows printing system

Решение проблем с печатью в Windows

Ошибка при предоставлении общего доступа к принтеру «Не удалось сохранить параметры принтера. Невозможно завершить операцию (ошибка 0x000006d9).»

Для устранение ошибки необходимо:

  1. Включить службу брэндмауэра (жмем правой клавишей на значке «Мой компьютер» и выбираем пункт «управление», далее находим пункт «службы», в появившемся списке выбираем брэндмауэр Windows и запускаем ее).
  2. Даем принтеру общий доступ.
  3. Отключаем брэндмауэр, если он нам не нужен.

P.S. Проверьте, что у вас запущена служба «сервер».

Не удается очистить очередь печати принтера, или зависает при запуске служба spoolsv

Для решения проблемы необходимо:

  1. Остановить службу Print Spooler (диспетчер печати)
  2. Очистить содержимое папки:
    C:\Windows\System32\spool\PRINTERS
  3. Запустить службу Print Spooler (диспетчер печати)

Вот командный (.BAT) файл для очистки очереди печати:

Faulting application spoolsv.exe, version XXX, faulting module unknown, version 0.0.0.0, fault address unknown

На одном компьютере под управлением ОС Windows XP, пропали все принтеры в «Принтеры и Факсы». На лицо остановка службы «Диспетчер очереди печати» (spooler). Но при попытке запустить службу, она сразу останавливается, в Журнале (Event) при этом сразу появляется сообщение вида: Faulting application spoolsv.exe, version , faulting module unknown, version 0.0.0.0, fault address unknown. Способы с остановкой службы, очисткой каталога C:\WINDOWS\system32\spool\PRINTERS и последующим запуском не давали никакого результата. Пришлось действовать координально.

Качаем Windows Server 2003 Resource Kit Tools, нам нужен Cleanspl.exe (Spooler Cleaner). Очищаем. Служба должна после очистки стартовать без проблем. Осталось установить драйвера для принтеров по новой. Но есть одна проблема, после очистки и последующей установке драйвера принтера, который подключен не по USB, а по сети (Ethernet), нам потребуется Standard TCP/IP Port, но его нет в списке.

Для того чтобы вернуть Standard TCP/IP Port, нужно восстановить ветки в реестре [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Monitors\Standard TCP/IP Port].

Содержимое готового reg файла:

Аналогично, возникнут проблемы подключения принтера по USB, до тех пор пока мы не восстановим ветку [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Monitors\USB Monitor]

Содержимое reg файла:

Лучше всего конечно восстановить сразу всю ветку: [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Monitors]

Отключение уведомлений о печати в системном лотке Windows

В уведомлениях о печати обычно не содержится никаких полезных сведений. Если они раздражают, их можно отключить.

  1. Откройте меню «Пуск» (Start) и выберите опцию «Принтеры и факсы» (Printers and Faxes).
  2. В появившемся окне выберите опцию «Свойства сервера» (Print Server Properties) в меню «Файл» (File). В Windows 7 соответствующая кнопка расположена прямо на панели инструментов.
  3. Откройте вкладку «Дополнительные параметры» (Advanced).
  4. Снимите флажок «Показывать уведомления локальных принтеров» (Show Informational Notifications For Local Printers).
  5. При необходимости снимите также флажок «Показывать уведомления сетевых принтеров» (Show Informational Notifications for Network Printers).
  6. Нажмите «OK» и закройте окно «Принтеры и факсы».

В зависимости от конфигурации системы, может потребоваться отключить уведомления как локальных, так и сетевых принтеров.

Сбой при запуске Spoolsv.exe

Если открыть окно свойств принтера, появляется следующее сообщение об ошибке: Недостаточно ресурсов.
При попытке печати документа появляется сообщение об ошибке «Нарушение прав доступа» (программа Dr. Watson). В журнале программы Dr. Watson присутствует запись об ошибке в программе Spoolsv.exe с кодом ошибки C0000005.
Появляется следующее сообщение об ошибке и диспетчер очереди печати останавливается: Инструкция по адресу ‘адрес’ обратилась к памяти по адресу ‘адрес’. Память не может быть «read». Такое же сообщение появляется при попытке перезапуска службы «Диспетчер очереди печати» и при открытии папки «Принтеры».

Причиной проблемы может являться то, что используемый по умолчанию монитор локального порта заменен программой независимого производителя. Чтобы устранить ошибку, необходимо внести изменения в системный реестр. Для этого выполните следующие действия:

  1. Откройте редактор реестра.
  2. Найдите параметр Local Port в следующем разделе реестра. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Monitors\Local Port
  3. Дважды щелкните параметр Driver и измените его значение. Введите строковое значение Localspl.dll и нажмите кнопку ОК.
  4. Проверьте, присутствуют ли мониторы независимых производителей в следующем разделе реестра.
    Удалите все мониторы, кроме используемых по умолчанию.
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Monitors
    По умолчанию используются следующие мониторы.
    AppleTalk Printing Devices (присутствует, если установлены службы для Macintosh)
    BJ Language Monitor
    Local Port
    PJL Language Monitor
    Standard TCP/IP Port
    USB Monitor
    Windows NT Fax Monitor
    ** LPR Port
    Примечание. Удаление монитора LPR Port должно выполняться только по рекомендации специалиста службы технической поддержки корпорации Майкрософт.
  5. Проверьте, присутствуют ли службы печати сторонних производителей в следующем разделе реестра.
    Удалите все службы печати, кроме используемых по умолчанию.
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Providers
    По умолчанию используется следующие службы печати:
    Internet Print Provider
    LanMan Print Services
  6. Проверьте, присутствуют ли обработчики печати сторонних производителей в следующем разделе реестра.
    Удалите все обработчики печати, кроме используемых по умолчанию.
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Environments\Windows NT x86\Print Processors
    По умолчанию используется следующий обработчик печати
    WinPrint
    Чтобы определить обработчик печати, используемый принтером, с помощью средства
    MPS_REPORTS (Microsoft Product Support Reporting Tool) откройте файл MachineName_PRINTDRIVERS.TXT
    и найдите в нем нужный обработчик печати независимого производителя и очереди, которые его используют.
  7. Замените обработчик печати независимого производителя обработчиком WinPrint:
    1. Нажмите кнопку Пуск и выберите в меню Настройка пункт Панель управления.
    2. Дважды щелкните значок Принтеры, щелкните правой кнопкой мыши нужный принтер и выберите команду Свойства.
    3. Перейдите на вкладку Дополнительно и нажмите кнопку Обработчик печати.
    4. В списке Обработчик печати выберите WinPrint.
    5. Дважды нажмите кнопку ОК.
  8. Закройте редактор реестра.
Читайте также:  Windows 10 hdmi connect

После внесения изменений в реестр перезапустите диспетчер очереди печати.
Для этого запустите консоль управления (MMC) и добавьте оснастки «Управление компьютером» или
«Службы». Щелкните правой кнопкой мыши службу Диспетчер очереди печати и выберите команду Пуск.

Произвольные зависания print spooler после установки принтера HP

Проблемы связаны с одним или несколькими из следующих файлов:

Hpbmmon.dll (HP Master Monitor)
Hpzpi4wm.dll (HP Print Processor)
Hpzpp4wm.dll (HP Print Processor)
HPtcpMon.dll (HP TCP Port monitor)

Решение проблемы, связанной с файлом Hpbmmon.dll

Для решения этой проблемы необходимо удалить HP Master Monitor. Для этого выполните следующие шаги:

  1. Запустите редактор реестра.
  2. Откройте следующий ключ:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Monitors\HP Master Monitor
  3. В меню «Файл» выберите «Экспорт».
  4. В поле «имя файла» введите HPprinter и нажмите «Сохранить».
  5. Кликните правой кнопкой мыши на разделе HP Master Monitor и выберите «Удалить».
  6. Нажмите «Да»
  7. Выйдите из редактора реестра и перезагрузите компьютер.
  8. Переименуйте файл Hpbmmon.dll file в «Hpbmmon.old.» Этот файл находится по этому адресу:
    C:\WINDOWS\system32\Hpbmmon.dll

Решение проблемы, связанной с файлами Hpzpi4wm.dll или Hpzpp4wm.dll

Обратите внимание: если этот принтер не работает с WinPrint, следующие шаги могут не работать. В этом случае свяжитесь с HP для обновления «обработчика печати» («Print Processor») HPZPP4WM до более новой версии.

  1. Нажмите «Старт», и выберите «Панель управления».
  2. Откройте «Принтеры и факсы».
  3. Кликните правой кнопкой на принтере и выберите «Свойства».
  4. Откройте вкладку «Дополнительно» и кликните на «Обработчик печати» («Print Processor»).
  5. Выберите «WinPrint» в окне «Обработчик печати», выберите RAW в качестве типа данных по умолчанию. Нажмите «ОК» два раза.
  6. Переименуйте файл Hpzpi4wm.dll в «Hpzpi4wm.old.» Файл находится по следующему адресу:
    C:\WINDOWS\system32\spool\drivers\w32x86\3\Hpzpi4wm.dll.
  7. Переименуйте файл Hpzpp4wm.dll file в «Hpzpp4wm.old.». Файл находится по следующему адресу:
    C:\WINDOWS\system32\spool\PRTPROCS\W32X86\Hpzpp4wm.dll

Решение проблемы, связанной с файлом HPtcpMon.dll

  1. Запустите редактор реестра
  2. Откройте следующий раздел реестра:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Monitors\HP Standard TCP/IP Port
  3. В меню «Файл» выберите «Экспорт».
  4. В поле «имя файла» введите HPprinter и нажмите «Сохранить».
  5. Кликните правой кнопкой мыши на разделе HP Standard TCP/IP Port и выберите «Удалить».
  6. Нажмите «Да»
  7. Откройте следующий раздел реестра:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Monitors\Standard TCP/IP Port
  8. Кликните 2 раза на ключ реестра «Driver» и проверьте, что его значение — tcpmon.dll
    Обратите внимание: если ключ реестра Driver не существует или же его значение не tcpmon.dll, создайте ключ реестра Driver и выставьте его значение в tcpmon.dll. Для этого:
    • В меню «Правка» выберите «Создать» и выберите «Строковый параметр» (String value).
    • Укажите название «Driver».
    • Кликните правой кнопкой мыши на Driver и выберите «Изменить».
    • Введите новое значение tcpmon.dll и нажмите ОК.
  9. Закройте редактор реестра и перезагрузите компьютер.
  10. Переименуйте файл HPtcpMon.dll в «HPtcpMon.old». Этот файл находится по следующему адресу:
    C:\WINDOWS\system32\HPTcpMon.dll

Продукты третьих фирм, которые описываются в этой статье, разработаны компаниями, которые не зависят от Microsoft. Microsoft не может гарантировать работоспособность или производительность данных продуктов.

Теоретические основы печати в системе Windows (2007-06-25)

Чтобы понять роль принт-серверов в процессе «овеществления байтов», классифицировать продукты этой области и обрисовать возможные проблемы, необходимо изучить процесс печати в наиболее популярной операционной системе, под которую заточены многие модели принтеров — Microsoft Windows. Принципиальная схема взаимодействия компонентов представлена на рис. 1.

Рис. 1. Технология печати в ОС Windows

С точки зрения обычных программ, все графические устройства, что мониторы, что принтеры, представляются виртуальными холстами, на которых программа может рисовать любые документы с помощью универсальных команд. Приложения напрямую с драйверами не контактируют, их задача ограничивается диалогом выбора принтера и вызовом диалога настроек печати.

Получив от приложения последовательность графических команд, подсистема GDI (Graphics Device Interface, «программный интерфейс для работы с графическими устройствами») пропускает их через драйвер, чтобы получить другую последовательность команд — уже специфичных для выбранного принтера. Чаще всего, на этом этапе драйвер выдаёт полностью готовый для печати поток данных, но в общем случае достаточно получить промежуточный метафайл — тогда, если принтер требует растрирования на компьютере, это растрирование может быть выполнено не на компьютере клиента, а на том, к которому подключён принтер, то есть на сервере печати.

GDI: небольшое лирическое отступление

Разумеется, транслировать команды рисования в поток данных для печати можно не только через GDI. Например, при печати на PostScript-принтер система GDI не используется, приложение самостоятельно формирует код на языке PostScript согласно файлу описания возможностей конкретного принтера (PPD, PostScript Printer Description). Cистема GDI, равно как и QuickDraw в Mac OS, для вывода в PostScript не очень подходят, поскольку позволяют указывать цвет только как RGB, исключая прямой контроль CMYK-красок, что для полиграфических задач обычно неприемлемо. Однако для PS-принтеров существуют и GDI-драйверы, чтобы можно было печатать из обычных приложений, работающих только с GDI-объектами. Аналогично и с другими «профессиональными» языками печати, такими как Prescribe. А вот более «народный» язык PCL, как правило, реализуется только в виде GDI-драйвера. Так что, формально, все принтеры, доступные через систему печати Windows — это GDI-принтеры, независимо от того, какой язык разметки для них считается родным.

Читайте также:  Windows application error report

Но обычно под «GDI-принтером» или «Windows-принтером» понимают host-based печать, когда принтер являет собой упрощённый аппарат, не обладающий собственными способностями по разметке страниц, цветоделению и растрированию, и требует готовые данные с компьютера: «здесь поставь точку, а здесь не надо». Бывают и гибридные устройства, как PCL3GUI, где макетирование осуществляется на компьютере, а растрирование выполняет уже сам принтер. Грубо говоря, провести черту между host-based принтерами и всеми остальными GDI-принтерами, можно по признаку, умеет ли данное устройство принимать шрифты в векторной форме или требует растр. Необходимо понимать, что host-based принтеры не хуже и не лучше остальных — просто у них такой упрощённый язык разметки.

В последнее время, примерно с 2003 г., получил большое распространение в бюджетном ценовом диапазоне ещё один класс устройств, условно называемых Win-принтерами. Этот обиходный термин восходит к «Win-модемам», которые занимаются только модуляцией сигнала, оставляя все прочие задачи на долю центрального процессора, то есть почти целиком реализуются в программных драйверах; а драйверы такие, как правило, выпускаются только под Windows (но бывают и для Mac OS, и для Linux). Точно как Win-модемы, то есть преимущественно программно, функционируют и Win-принтеры. И мало того, что они живут на всём готовом, принимая от компьютера законченный растр страницы, так они даже на это не способны, пока не скачают с компьютера полную версию управляющей программы, потому что в постоянной памяти хранят лишь базовый загрузчик. Соответственно, если подключить такой принтер не к компьютеру, а к обычному принт-серверу, который знать не знает, что принтеру сначала необходим сеанс «гипноза», получится просто груда беспомощного металлолома. Эта стратегия очень выгодна производителям, потому что они экономят не только на микросхемах, но и на разработке микропрограмм, на скорую руку создавая что получится, а потом безболезненно выпуская обновление как обычную заплатку для драйвера, таким образом исключая доверие пользователю довольно опасной процедуры перепрошивки ПЗУ. Нельзя отрицать положительные моменты подобного подхода, однако стремление большинства производителей завуалировать данное обстоятельство трудно счесть невинной недомолвкой.

Для полноты картины следует ещё упомянуть о существовании печатающих устройств, которые полностью контролируются с компьютера в реальном времени. Например, сюда относятся лазерные принтеры, объём памяти которых достаточен для размещения лишь части изображения страницы — ровно на один оборот фотовала. Соответственно, компьютер должен непрерывно отслеживать состояние принтера, чтобы вовремя отправить очередную порцию данных — ведь лазерный механизм печати, в отличие от струйного, не может остановиться и сделать паузу, пока не поступят следующие данные. Теоретически, сама по себе необходимость двухстороннего обмена данными не является помехой для работы в сети, особенно если использовать примитивные протоколы передачи, без высокоуровневых абстракций типа очередей печати. Практически же успех подобного мероприятия вызывает большие сомнения. К счастью, таких динозавров можно считать вымершим видом — теперь их нишу заняли Win-принтеры.

Далее задание попадает в очередь печати, соответствующую выбранному принтеру. Диспетчер очередей (спулер) сохраняет временную копию задания на диск, чтобы освободить оперативную память и уменьшить зависимость от сбоев. Трансформированное слово spool в русском языке пишется как «шпулька»: спулер и в самом деле напоминает эту катушку в швейной машине — сначала наматываем на него нитку (сохраняем задание), а потом она разматывается при шитье (данные уходят на печать).

В зависимости от того, подключён принтер к локальному порту или является сетевым, задание поступает либо к провайдеру местной печати, либо отправляется на сервер сетевой печати, у которого своя система очередей, свой провайдер печати и т. д. Здесь надо сделать важную оговорку относительно того, что такое сервер печати на самом деле. Настоящий сервер печати — это компьютер, к которому подключены принтеры и который обеспечивает общий доступ по сети к этим принтерам: позволяет печатать на них, загружать их драйверы для различных операционных систем, администрировать их. У сервера печати свои вычислительные ресурсы, своя память для хранения заданий. Стандартной для Windows является система сетевой печати на базе универсального протокола SMB (Server Message Block, «блочный обмен информацией»), используемого также для общего доступа к файлам; подробнее об этом и других протоколах см. «Протоколы сетевой печати». Управлять общим доступом к принтеру можно на вкладке Доступ в его свойствах.

Провайдер местной печати преобразует задание на промежуточном языке (метафайл) в понятный принтеру код с помощью подходящего обработчика (процессора) печати. Если нужный код уже был получен на этапе работы GDI и драйвера, преобразование тут не требуется, и задание проходит данную стадию нетронутым (raw). А вообще, это как раз та точка маршрута, где происходит растрирование страниц для т. н. «GDI-принтеров»: если принтер подключён к серверу, то и растрирование выполняется на сервере, избавляя компьютер клиента от лишних нагрузок. Используемый обработчик печати можно определить, нажав соответствующую кнопку на вкладке Дополнительно в свойствах принтера. Windows оснащена стандартным процессором WinPrint, поддерживающим основные виды промежуточных форматов. Популярными среди многих производителей оборудования являются разработки компании Zenographics: например, IMFPrint. Существуют также процессоры, позволяющие эмулировать язык профессиональной печати PostScript на принтерах, не реализующих его аппаратно.

Готовое задание на родном языке принтера можно уже и печатать. Для отправки задания на принтер используются мониторы печати. Термин «монитор печати» не имеет ничего общего с мониторами состояния — фирменными утилитами некоторых производителей, отображающими на экране ход работы. Монитор печати — это своеобразный драйвер протокола печати, который позволяет отправить задание на принтер по тому или иному интерфейсу (но не драйвер этого интерфейса). Мониторы печати подразделяются на языковые мониторы и мониторы портов. Языковые мониторы осуществляют двусторонний диалог с принтером, применяя, например, подмножество команд языка PJL, отвечающее за получение информации о текущем состоянии устройства: готовность, замятие бумаги, уровень чернил и т. п. Вместо PJL, который реализован в стандартной библиотеке функций, могут применяться и другие языки. Мониторы портов просто регулируют передачу информации через порт принтера, посылая порции данных по сигналу готовности к их приёму. Назначение портов осуществляется на одноимённой вкладке в свойствах принтера. Если имеется несколько одинаковых печатающих устройств, их можно объединить в группу (пул, от англ. pool — «объединение»), которая будет действовать как единый объект, распределяя задания между принтерами. Принтеры одной группы должны находиться в одном помещении, потому что заранее нельзя предсказать, какому именно достанется ваш документ.

Читайте также:  Автозапуск punto switcher windows 10

Как и сами принтеры, порты тоже бывают местными (локальными) и сетевыми (точнее, удалёнными — remote). К местным портам относятся только параллельный LPT и последовательный COM, которые обслуживаются стандартным монитором локальных портов. Сетевые порты представляют собой обёртки для специализированных протоколов сетевой печати, таких как LPD. Собственно, вот здесь и вступают в действие те устройства, которые сейчас стало принятым называть серверами печати (print-server appliance), но они суть обыкновенные сетевые адаптеры принтеров. Некоторые из них более функциональны, другие иначе как конвертерами «USB-Ethernet» назвать трудно. Они тоже являются компьютерами в миниатюре и позволяют печатать по сети — просто реализуют не все функции настоящего сервера печати. Более того, при наличии должных знаний, можно самостоятельно сконструировать такой принт-сервер из старого компьютера и операционной системы типа Linux.

Начинающим пользователям может показаться странным, что принтер, подключённый к сетевому порту, всё равно считается локальным, в то время как принтер, подключённый к локальному порту другого компьютера, считается сетевым. Ещё более странным может выглядеть то, что интерфейс USB не входит в категорию локальных портов — он считается удалённым (remote port), и каждый разработчик применяет собственные методы взаимодействия, усложняя или вовсе пресекая на корню попытки подключения к принт-серверам даже собственной марки.

Помимо отправки готового задания на принтер, его можно сохранить в файл. Такой файл потом распечатывается без повторной обработки, и главное, для этого не требуется наличие на компьютере ни приложения, создавшего файл, ни использованных шрифтов, ни самого исходного документа. Перенаправление в файл выполняется либо при установке соответствующей галочки в диалоге печати, либо после назначения принтеру специального порта FILE. Другим видом перенаправления является создание виртуального порта, монитор которого прогоняет все получаемые данные через назначенную программу и записывает результат её работы в другой порт — более логично использовать для этих нужд специализированный обработчик печати, но зато таким образом, например, удаётся приспособить перенаправитель портов RedMon и интерпретатор GhostScript для эмуляции языка PostScript, не затратив ни копейки на это бесплатно распространяемое ПО.

Выбор модели взаимодействия

Как уже говорилось, используя вместо настоящего компьютерного сервера печати компактное устройство без жёсткого диска и с небольшим объёмом памяти, нельзя рассчитывать на буферизацию больших заданий или растрирование на стороне сервера. Если нужны такие функции, следует отказаться от однорангового режима (peer-to-peer, p2p), при котором клиенты напрямую обращаются к принт-серверу, считая его сетевым портом для своего локального принтера (рис. 2а).

Рис. 2. Одноранговое взаимодействие и архитектура «клиент-сервер»

Необходимо перейти к модели клиент-сервер, где принтер с точки зрения рабочих станций является удалённым, и лишь для самого сервера — локальным (рис. 2б). Здесь выделенный компьютер выступает в роли сервера печати для клиентов и является единственным, кто напрямую обращается к внешнему серверу печати соответствующего принтера. При этом тот сервер печати выступает в роли простого сетевого адаптера, позволяющего вместо интерфейсов USB или LPT передавать информацию по локальной сети со всей её развитой инфраструктурой. Поэтому от такого сетевого адаптера не требуется каких-то особых «наворотов» — лишь бы был совместимым с компьютерным сервером, потому что уровень обслуживания конечных клиентов зависит уже от компьютерного сервера.

Родовое проклятье Win-принтеров

Так всё-таки, из-за чего многие бюджетные модели принтеров, выпускаемых сейчас на рынок, не работают с традиционными принт-серверами? Ведь они прекрасно функционируют при непосредственном подключении к вашему компьютеру или при подключении к другому компьютеру и разделению как общий ресурс. Проблема именно в том, что принт-сервер не загружает в принтер нужную ему управляющую программу. Чтобы научить некоторые принт-серверы выполнять подобные трюки, есть определённые способы, однако они не для рядового пользователя.

Но почему же зависает драйвер при попытке печати на такой принтер, если тот подключен через принт-сервер? И почему он не зависает при печати на этот же принтер, если его подключать к другому компьютеру? А потому что драйвер не совсем глупый: он пытается загрузить прошивку только в локальный принтер. То есть когда идёт печать на локальный принтер, в том числе сидящий на удалённом (сетевом) порту, драйверу необходимо сначала загрузить в принтер прошивку, прежде чем тот сможет принимать данные для печати. Когда же принтер сетевой, драйвер на вашем компьютере оставляет эту задачу драйверу на компьютере-сервере, для которого тот принтер является локальным.

По вопросам совместимости принт-серверов с т. н. Windows-принтерами см. статью «Серверы печати — „чёртик из коробки”».

Статью «Теоретические основы печати в системе Windows (2007-06-25)» Вы можете обсудить на форуме.

Оцените статью