Перейти на главную страничку сайта (список статей, файлы для скачивания)

ФОРУМ (здесь можно обсудить эту статью, а также любые проблемы программирования на различных макроязыках и в скриптовых средах)

Библиотека WshExtra.dll и её объектная модель

Назначение и установка

Библиотека WshExtra.dll - небольшой ActiveX, который может быть использован в любых средах, которые в состоянии выступить в роли OLE-клиента, например, в MS Office (VBA), 1C:Предприятии, административных скриптах Windows (.vbs и .js) и т.д. Автор программы - Dino Esposito. Библиотека WshExtra.dll распространяется свободно. Вы можете скачать библиотеку здесь (версия 1.0.0.1 от 30.09.2001г., архив 14 447 байт). Ссылка на первоисточник здесь. Примеры кода в настоящей статье приводятся на языке VBScript для административных сценариев Windows.

Возможности, предоставляемые библиотекой:

Порядок установки:

Библиотека предоставляет три объекта:


ОбъектProgID
ClipboardWshExtra.Clipboard
FileChooserWshExtra.FileChooser
FileQueryWshExtra.FileQuery

Объект Clipboard

Методы:


МетодОписание
Copy(ByVal bstrText As String) Копирует переданную строку в буфер обмена.
Paste() As String Возвращает содержимое буфера обмена.

Пример кода:


Set WshExtra = CreateObject("WshExtra.Clipboard")
WshExtra.Copy("Запись в буфер обмена")
MsgBox WshExtra.Paste()

Замеченные неприятности: похоже, объект не очищает буфер перед копированием. Так что если в буфере до этого лежал текст в нескольких форматах, то ansi-текст заменяется на переданную методу Copy строку, а юникод, например, остаётся как был. В результате где-то вставится потом новый текст, а где-то - старый. К примеру, в Блокнот вставляется старый текст, который был раньше.

Как можно проверить: скопировать в буфер что-нибудь из Блокнота, потом запустить, например, такой скрипт на JScript:

cb=new ActiveXObject("WshExtra.Clipboard");
cb.Copy("Текст для проверки.");
WScript.Echo(cb.Paste());

После этого в том же Блокноте вставить текст из буфера через Ctrl+V или подобным способом.

За замечание об очистке буфера - благодарность участнику сообщества под ником YMP.

Объект FileChooser

Свойства и методы:


Метод/свойствоОписание
Browse(ByVal bstrPath As String) As String Вызывает диалог открытия файла. В качестве параметра передаётся начальный каталог.
FileCount As Long Количество файлов, выбранных пользователем. Только чтение.
Filter As String Фильтр по типам файлов, которые может выбрать пользователь. Представляет собой строку с описаниями фильтров и их масками, разделенные символом "|". Например: "INI-файлы (*.ini)|*.ini|Все файлы|*.*|".
Title As String Заголовок окна выбора файлов.

Пример кода:


Set WshExtra = CreateObject("WshExtra.FileChooser")
WshExtra.Title = "Заголовок окна открытия файла"
WshExtra.Filter = "INI-файлы (*.ini)|*.ini|Все файлы|*.*|" 'маска
MsgBox WshExtra.Browse("C:\") 'начальный каталог
MsgBox "Количество выбранных файлов - " & WshExtra.FileCount

Объект FileQuery

Объект FileQuery представляет из себя коллекцию, содержащую пути к файлам. Свойства:


СвойствоОписание
Count As Long Количество элементов коллекции. Только чтение.
FileSpec As String Маска пути для поиска/фильтрации файлов. Может содержать подстановочные символы "*" и "?". Например, "C:\*.sy?".

Пример кода:


Set WshExtra = CreateObject("WshExtra.FileQuery")
WshExtra.FileSpec = "c:\*.sy?"
sFiles = ""
For Each elem In WshExtra
    sFiles = sFiles & elem & vbCrLf
Next
MsgBox "Найдено папок/файлов - " & WshExtra.Count & vbCrLf & vbCrLf & sFiles

Составление - Людоговский Александр

Перейти на главную страничку сайта (список статей, файлы для скачивания)

© 2007 http://www.script-coding.com При любом использовании материалов сайта обязательна ссылка на него как на источник информации, а также сохранение целостности и авторства материалов.