- Регистрация
- 12 Фев 2008
- Сообщения
- 11,710
- Реакции
- 160
- Баллы
- 63
Приветствую, уважаемые коллеги и участники форума!
Данным топиком хочу рассказать Вам про своего старичка "HP LaserJet 1005", который приехал ко мне на работу прямиком из гаража, где пробыл минимум лет 10, а то и больше. Ну принтер и принтер, скажете Вы, что в нем особенного, но прошу не торопиться с выводами. Ситуация в том, что у данной модели нет дров для Windows выше 7-й версии, вообще никаких, а задачка предстояла, ни много ни мало, подключить его к своему рабочему ПК, на котором установлена Windows 10 22H2. Пошукав по сети, испробовав огромное количество дров, от официальных под различные версии ОС, до тех, что на сомнительных ресурсах, даже к сборникам обращался, но никакие дровишки не заставили печатать данного ветерана под свежей ОС. Можно конечно было выбросить принтер на помойку, но какой я тогда технарь, если отступлю от поставленной цели и подниму белый флаг перед железом?
Собственно, сам принтер:
Значит, первым делом поставил виртуалку (VirtualBox), на которую накатил Windows 7 Basic, подключил принтер обычным кабелем USB к компьютеру, пробросил порт на виртуалку и уже там установил под него драйверы. Казалось бы, расшарь принтер, установи в "десятке" универсальный драйвер печати "НР" и всё взлетит. Как бы не так! Такой финт не проканал, а лазить постоянно на виртуалку, чтобы выпустить на печать док такое себе занятие, поэтому продолжил копать дальше. Шарясь в сети нашел такой вот виртуальный принтер: PDFCreator
Его фишка в том, что можно при печати документа автоматом сохранять файл PDF в заранее заданной директории, а вот это уже интересно.
Собственно, сперва я создал общую директорию между виртуалкой и хостом, потом скачал виртуальный принтер и настроил автоматическое сохранение файла при печати на этот виртуальный принтер в созданную директорию. Сам процесс установки расписывать не буду, ибо он тривиален до не могу, а вот настройку с удовольствием продемонстрирую:
1. Отключил функцию "Открывать PDF после создания";
2. Указал директорию, которая расшарена между хостом и виртуалкой.
Теперь я стал ближе к цели, т.е. я отправляю на печать какой-угодно файл, он ложится в нужную мне директорию и фактически виден на виртуальной машине.
Осталось дело за малым, это как-то сказать виртуалке, что появившейся в директории файл нужно пнуть в сторону принтера на печать.
Немного пораскинув мозгами и оседлав гугл нашел в просторах сети и немного доработал такой вот скрипт Visual Basic:
Данный алгоритм "мониторит" папку на наличие в ней файлов и, как только файл появляется, отправляет его на печать.
В общем, заменил "C:\Folder" на свою папку (та, что проброшена с хоста) , поставил "Acrobat Reader", чтобы ОСь на виртуалке могла читать файлы, прилетевших с хоста, а сам скрипт затолкал в ветку реестра "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run".
Важный момент: принтер на виртуалке должен быть установлен по умолчанию!
Собственно, почти всё, для удобства и автоматизации процесса (дабы каждый раз не включать и не выключать виртуалку при включении/выключении/перезагрузке) добавил на хосте(win 10) остановку и сохранение состояния виртуальной машины при завершении работы(1) и старт при загрузке ОС/входа в систему(2).
1. gpedit.msc=>Конфигурация пользователя=>Конфигурация Windows=>Сценарии (вход/выход из системы) - затолкал туда такой батник:
2. Добавил батник в автозагрузку системы:
Где "Win7Print" это имя моей виртуалки.
Вот таким, нехитрым способом старенький принтер обрел вторую жизнь под современной ОС.
Данным топиком хочу рассказать Вам про своего старичка "HP LaserJet 1005", который приехал ко мне на работу прямиком из гаража, где пробыл минимум лет 10, а то и больше. Ну принтер и принтер, скажете Вы, что в нем особенного, но прошу не торопиться с выводами. Ситуация в том, что у данной модели нет дров для Windows выше 7-й версии, вообще никаких, а задачка предстояла, ни много ни мало, подключить его к своему рабочему ПК, на котором установлена Windows 10 22H2. Пошукав по сети, испробовав огромное количество дров, от официальных под различные версии ОС, до тех, что на сомнительных ресурсах, даже к сборникам обращался, но никакие дровишки не заставили печатать данного ветерана под свежей ОС. Можно конечно было выбросить принтер на помойку, но какой я тогда технарь, если отступлю от поставленной цели и подниму белый флаг перед железом?
Собственно, сам принтер:
Значит, первым делом поставил виртуалку (VirtualBox), на которую накатил Windows 7 Basic, подключил принтер обычным кабелем USB к компьютеру, пробросил порт на виртуалку и уже там установил под него драйверы. Казалось бы, расшарь принтер, установи в "десятке" универсальный драйвер печати "НР" и всё взлетит. Как бы не так! Такой финт не проканал, а лазить постоянно на виртуалку, чтобы выпустить на печать док такое себе занятие, поэтому продолжил копать дальше. Шарясь в сети нашел такой вот виртуальный принтер: PDFCreator
Его фишка в том, что можно при печати документа автоматом сохранять файл PDF в заранее заданной директории, а вот это уже интересно.
Собственно, сперва я создал общую директорию между виртуалкой и хостом, потом скачал виртуальный принтер и настроил автоматическое сохранение файла при печати на этот виртуальный принтер в созданную директорию. Сам процесс установки расписывать не буду, ибо он тривиален до не могу, а вот настройку с удовольствием продемонстрирую:
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
Код:
@echo off
"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" startvm Win7Print --type headless
exit /b
Вот таким, нехитрым способом старенький принтер обрел вторую жизнь под современной ОС.
Последнее редактирование: