1

Тема: HTA: приложение контроля используемых на удаленной системе принтеров

Я ранее в теме HTA+VBS: Подключение принтеров в домене анонсировал свою HTA-утилитку работы с принтерами на машинах домена.

Приложение дополнилось новыми возможностями, я решил прорекламировать отдельно всё, что умеет скрипт - может кому пригодится :

* отображение установленных на удаленной системе принтеров, их статусов,  TCPIPPrinter-портов, признака расшаренности локальных принтеров, количества отправленных на принтера заданий после включения машины
* удаленное переназначение принтера по-умолчанию текущего пользователя машины из списка существующих принтеров
* отображение списков используемых и неиспользуемых в системе принтерных портов - TCPIPPrinterPort's
* удаленная смена имени ранее установленного в системе принтера
* удаленная смена значения TCPIPPrinterPort принтера
* удаление заданий принтера
* удаление объекта принтера из системы
* отправка тестовой страницы на любой из принтеров системы
* тест доступности принтера - внешний Ping его TCPIPPrinterPort либо открытие WEB-интерфейса
* получение списка синсталлированных в системе принтерных драйверов
* перезапуск Spool-сервиса "Диспетчер очереди печати" удаленной машины
* просмотр spooler-каталога (c:\windows\system32\spool\printers)

Скриншоты и архив со скриптом можно увидеть на сайте - sites.google.com--printerlistpc-hta

Текущие версии - на странице проекта - small-scripts

WBR. Roman

2

Re: HTA: приложение контроля используемых на удаленной системе принтеров

За прошедший год в PrinterListPC.hta добавились следующие полезности:
- более удобное отображение используемости в удаленной системе TCPIPPrinterPort, удаление неиспользуемых ;
- определение специфических для HP портов (работа с реестром удаленной системы);
- резолв адресов хостов принтеров: айпи - в имена, имена - в айпи (последовательный пинг хостов с резолвом имен).
и проч.

Адрес репозитария для исходников изменился - code.google.com/p/small-scripts.printers-at-pc/

Сайт с картинками и архивом остался прежний - sites.google.com/.../printerlistpc-hta

WBR. Roman

3

Re: HTA: приложение контроля используемых на удаленной системе принтеров

Наконец-то я решился попробовать в свои htа добавить быстрый асинхронный пинг


В PrinterList.hta был последовательный пинг хостов принтерных портов машины - его и заменил на асинхронный и добавил асинхронный пинг диапазона сети удалённой машины с целью вычислить имеющиеся в подразделении машины сетевые принтера - все ответившие хосты, проверяются на подключение по HTTP.

Организацию отправки асинхронных запросов в hta взял из HTA: LAN Administrator (спасибо mozers за комментарии в исходниках).

Отправку запросов выполняю не сразу на весь диапазон, а с поддержкой очереди в 10 хостов (VBScript / WMI : Асинхронный мультипинг)


Подробнее в спойлере:

+ открыть спойлер

Очередь в 10 хостов подобрана опытным путём.

Т.к. в случае заполненности очереди в vbs-скрипте использовалась команда простоя "WScript.Sleep 100", недоступаня в HTA, то я сделал паузу вызовом внешней команды с ожиданием её выполнения:


' --- "форсирование" отображения изменений в окне HTA
' (более длительная отработка, т.к. ожидаем ответ)
Sub ue_updateWinHta_wait
    oShell.Run "ping /?", 0, True
End SUB

При активной работе "задержки" процессор у меня грузится на 65-70%, но приложение остаётся доступным на действия пользователя.

Кнопка "Cancel" по ходу пинга постоянно получает фокус в целях: скроллинга к ней (для визуального контроля последней добавленной строки таблицы) и возможность прекращения пользователем отправки новых пингов.


Потоколирование сделал таким образом:

  • перед отправкой пинга добавляю в таблицу строку

  • функция обработки ответа от пинга получает параметром номер строки (коллекция параметра передает: номер строки и признак таблицы, т.к. асинхронный пинг реализован для двух разных таблиц формы) и вносит в неё изменения

  • если строка (при пинге диапазона сети) содержит неответивший хост, то эту строку скрываю (.style.display = "none"), если хост доступен - отправляю на тестирование http.

Архив здесь: https://sites.google.com/site/scripttoo … listpc-hta

Критика приветствуется.

WBR. Roman

4

Re: HTA: приложение контроля используемых на удаленной системе принтеров

Коллеги, просьба протестировать и отписаться по результатам.

5

Re: HTA: приложение контроля используемых на удаленной системе принтеров

Прикольно !
Моя разработка всё ещё жива и интересна !!!
СУПЕР !!!
Скоро уже 5 лет ей будет )))

Времени не хватает... :-(

6

Re: HTA: приложение контроля используемых на удаленной системе принтеров

Rom5 пишет:

в случае заполненности очереди в vbs-скрипте использовалась команда простоя "WScript.Sleep 100", недоступаня в HTA, то я сделал паузу вызовом внешней команды с ожиданием её выполнения

HTA это HTML, соответственно Вам доступны методы setTimeout/setInterval с помощью которых можно организовать "задержку" выполнения некоторой части программы.

( 2 * b ) || ! ( 2 * b )

7

Re: HTA: приложение контроля используемых на удаленной системе принтеров

Rumata пишет:
Rom5 пишет:

в случае заполненности очереди в vbs-скрипте использовалась команда простоя "WScript.Sleep 100", недоступаня в HTA, то я сделал паузу вызовом внешней команды с ожиданием её выполнения

HTA это HTML, соответственно Вам доступны методы setTimeout/setInterval с помощью которых можно организовать "задержку" выполнения некоторой части программы.

Rumata, Вы правы. Как-то было не вырисовывался алгоритм использования setTimeout при организации такого рода цикла.

Но, поразмыслив, был сделал так:
используется несколько глобальных переменных для счетчика отправленных и полученнных асинхронных пингов и длины текущей очереди, цикл организован запуском через setTimeout одной и той же функции, которая после проверки значений этих счетчиков, либо сначала отправляет очередной пинг при необходимости, либо откладывает свой запуск на 100мс, если нужно дождаться уменьшения очереди либо дождаться завершения отработки оставшихся пингов. Когда всё уже отработано - сама себя более не запускает. Вобщем на той же машине и операционке загрузка ЦП на "пустых циклах" уменьшилась в половину. Спасибо за подсказку


Программка была оптимизирована ещё по некоторым моментам пару месяцев назад, но всё некогда было дотестировать и выложить. Исправился. Архив можно скачать там же - sites.google.com/.../printerlistpc-hta

WBR. Roman

8

Re: HTA: приложение контроля используемых на удаленной системе принтеров

Евген пишет:

Прикольно !
Моя разработка всё ещё жива и интересна !!!
СУПЕР !!!
Скоро уже 5 лет ей будет )))

Вы не поверите) - и ещё одна моя поделка на тему разработки асинхронного пинга - программка scanNet.hta.

Когда-то я был сваял scanNet.vbs - сканирование указанного диапазона сети. Он и сейчас мною используется при поиске хоста с определенным именем, но предоставляемая народу scanNet.hta используется в основном для того, чтобы получить более полную картину по интересующей сетке.

+ открыть спойлер

Поэтому в этой hta выполняется выборка из AD по машине, по менеджеру машины и по текущему ползователю (смотря какие исходные данные удалось получить резолвом имени при пинге или WMI-опросом хоста).

Коррекстость резолва имени при непрохождении WMI пробую подтвердить ещё одним пингом - по отрезолвленному имени.

Ну, и поиск хостов с web-интерфейсами с учётом возможной ошибки о центре сертификации (проверялось только на англояз.системах).

Есть возможность выбирать сеть из заранее подготовленного списка сетей.
Есть возможность сканировать машины из файла-списка.
Есть возможность практически все нужне настройки передать параметрами из командной строки, в т.ч. и настройки таймаутов для пинга и http.


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


Инструкция со скриншотами - sites.google.com/.../scannet-hta
Репозитарий - https://code.google.com/p/small-scripts … cannet-hta

Архив приложения прикладываю

Post's attachments

scanNet-hta.zip 107.72 kb, 5 downloads since 2014-06-17 

You don't have the permssions to download the attachments of this post.
WBR. Roman