• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о проекте, чтобы узнать больше. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

HP LaserJet 1005 + Windows 10

Max

Компьютерщик
Почётный участник
Регистрация
12 Фев 2008
Сообщения
11,710
Реакции
160
Баллы
63
Приветствую, уважаемые коллеги и участники форума!

Данным топиком хочу рассказать Вам про своего старичка "HP LaserJet 1005", который приехал ко мне на работу прямиком из гаража, где пробыл минимум лет 10, а то и больше. Ну принтер и принтер, скажете Вы, что в нем особенного, но прошу не торопиться с выводами. Ситуация в том, что у данной модели нет дров для Windows выше 7-й версии, вообще никаких, а задачка предстояла, ни много ни мало, подключить его к своему рабочему ПК, на котором установлена Windows 10 22H2. Пошукав по сети, испробовав огромное количество дров, от официальных под различные версии ОС, до тех, что на сомнительных ресурсах, даже к сборникам обращался, но никакие дровишки не заставили печатать данного ветерана под свежей ОС. Можно конечно было выбросить принтер на помойку, но какой я тогда технарь, если отступлю от поставленной цели и подниму белый флаг перед железом?

Собственно, сам принтер:

Fso40BqH.webp


Значит, первым делом поставил виртуалку (VirtualBox), на которую накатил Windows 7 Basic, подключил принтер обычным кабелем USB к компьютеру, пробросил порт на виртуалку и уже там установил под него драйверы. Казалось бы, расшарь принтер, установи в "десятке" универсальный драйвер печати "НР" и всё взлетит. Как бы не так! Такой финт не проканал, а лазить постоянно на виртуалку, чтобы выпустить на печать док такое себе занятие, поэтому продолжил копать дальше. Шарясь в сети нашел такой вот виртуальный принтер: PDFCreator
Его фишка в том, что можно при печати документа автоматом сохранять файл PDF в заранее заданной директории, а вот это уже интересно.
Собственно, сперва я создал общую директорию между виртуалкой и хостом, потом скачал виртуальный принтер и настроил автоматическое сохранение файла при печати на этот виртуальный принтер в созданную директорию. Сам процесс установки расписывать не буду, ибо он тривиален до не могу, а вот настройку с удовольствием продемонстрирую:

PDFCreator.webp


1. Отключил функцию "Открывать PDF после создания";
2. Указал директорию, которая расшарена между хостом и виртуалкой.
Теперь я стал ближе к цели, т.е. я отправляю на печать какой-угодно файл, он ложится в нужную мне директорию и фактически виден на виртуальной машине.

Осталось дело за малым, это как-то сказать виртуалке, что появившейся в директории файл нужно пнуть в сторону принтера на печать.
Немного пораскинув мозгами и оседлав гугл нашел в просторах сети и немного доработал такой вот скрипт Visual Basic:
Код:
Option Explicit : Dim objWord, objDoc, wssh, objFS, objShell, objPath, objFolder, objItem
 
Set wssh = CreateObject("WScript.Shell")
Set objFS = CreateObject("Scripting.FileSystemObject")
Set objPath = objFS.GetFolder("C:\Folder\") 'Папка, из которой файлы отправляются на печать
 
Do
  PrintDelInFolder objPath
  WScript.Sleep 1000 ' Частота проверки папки -- 1 секунда
Loop
 
Sub PrintDelInFolder(objFolder)
    For Each objItem In objFolder.Files
        If StrComp(objFS.GetExtensionName(objItem.Name), "pdf", vbTextCompare) = 0 Then
                With wssh
            WScript.Sleep 1000
                    On Error Resume Next
            dim f
            f = Cstr(objItem.Path+".pdf")
            objFS.MoveFile objItem.Path, f
            If err.number=0 then
                Set objShell = CreateObject("Shell.Application")
                objShell.ShellExecute f, "vbHide", "", "print", 0
                set objShell = nothing
                err.Clear
                Do
                WScript.Sleep 5000
                objFS.DeleteFile f ,true
                        Loop While objFS.FileExists(f)
                err.Clear
            End If
            On Error Goto 0
        End With
        End If
    Next
End Sub
WScript.Quit 0

Dim oShell : Set oShell = CreateObject("WScript.Shell")
' Launch notepad '
oShell.Run "notepad"
WScript.Sleep 3000
' Kill notepad '
oShell.Run "taskkill /im AcroRd32.exe", , True
Данный алгоритм "мониторит" папку на наличие в ней файлов и, как только файл появляется, отправляет его на печать.
В общем, заменил "C:\Folder" на свою папку (та, что проброшена с хоста) , поставил "Acrobat Reader", чтобы ОСь на виртуалке могла читать файлы, прилетевших с хоста, а сам скрипт затолкал в ветку реестра "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run".

Важный момент: принтер на виртуалке должен быть установлен по умолчанию!

Собственно, почти всё, для удобства и автоматизации процесса (дабы каждый раз не включать и не выключать виртуалку при включении/выключении/перезагрузке) добавил на хосте(win 10) остановку и сохранение состояния виртуальной машины при завершении работы(1) и старт при загрузке ОС/входа в систему(2).
1. gpedit.msc=>Конфигурация пользователя=>Конфигурация Windows=>Сценарии (вход/выход из системы) - затолкал туда такой батник:
Код:
@echo off
"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" controlvm "Win7Print" savestate
2. Добавил батник в автозагрузку системы:
Код:
@echo off
"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" startvm Win7Print --type headless
exit /b
Где "Win7Print" это имя моей виртуалки.

Вот таким, нехитрым способом старенький принтер обрел вторую жизнь под современной ОС. :)
 
Последнее редактирование:
а не проще его в какую-нить малинку с линушком подключить и по сети расшарить по самбе?
 
а не проще его в какую-нить малинку с линушком подключить и по сети расшарить по самбе?
Расшарить несложно, но какие дрова прикажете под Win10 ставить? Просто так она (Win10) его не скушает, проверял уже. :)
 
Назад
Сверху