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

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

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

Оглавление:
Назначение
Установка
Обработка ошибок
Сервер ScriptCodingInfo.FileSystem
    Метод CreateDirs(ByVal DirNameToCreate)
    Метод ClearFolder(ByVal FolderToClear)
    Метод WalkFolders(ByVal FolderToWalk)
    Метод WalkFiles(ByVal FolderToWalk)
    Метод WalkFilesEx(ByVal FolderToWalk, ByVal Mask, ByVal ModifyDate, ByVal Flag)
    Метод WalkFoldersEx(ByVal FolderToWalk, ByVal Mask, ByVal ModifyDate, ByVal Flag)
    Метод EmptyFolders(ByVal FolderToWalk)
    Метод CompareFolders(ByVal Path1, ByVal Path2, ByVal flSynch)
    Метод FindFile(ByVal FileNameForFind)
Сервер ScriptCodingInfo.Win32API
    Обёртка идентификаторов оконных сообщений
    Обёртка Beep(ByVal Freq, ByVal Duration)
    Обёртка GetForegroundWindow()
    Метод GetTitleForegroundWindow()
    Метод GetScreenResolution()
Сервер ScriptCodingInfo.Text
    Метод FormatDateTimeForFilename(ByVal DateTime, ByVal Delim, ByVal Style)
    Метод DiffTextFiles(File1, File2, File3, title)
    Метод DiffTextFiles2(File1, File2, delim, File3, title)
Сервер ScriptCodingInfo.Translator
    Свойство WScript
    Метод AddEvent(EventName, EventHandler)
    Метод RemoveEvent(EventName)
Сервер ScriptCodingInfo.ConsoleCommands
    Метод RunCommand(ByVal Command)
    Метод GetIPAddress(ByVal ConnName)
    Метод IsAlive(ByVal Host)
Сервер ScriptCodingInfo.BinaryFile
    Метод BinCode(file, str)
    Метод FileCodePage(ByVal FileToConvert, ByVal SourceCharset, ByVal DestCharset)
    Метод StrCodePage(ByVal StrToConvert, ByVal SourceCharset, ByVal DestCharset)
    Метод FilePatch(file, position, byte)
Сервер ScriptCodingInfo.LogOut
    Флаги
    Свойство IncludeDateTime
    Свойство WScript
    Свойство LogFilePath
    Свойство EventType
    Свойство EventTarget
    Свойство ScrollIE
    Свойство Delimiter
    Метод ClearLogFile()
    Метод Out(ByVal TextForOut)
Сервер ScriptCodingInfo.DialogHTA
    Метод CreateDialog(ByRef Params)
Сервер ScriptCodingInfo.Network
    Метод GetComputers(domain)
Сервер ScriptCodingInfo.Settings
    Метод SaveSetting(ByVal Name, ByVal Value)
    Метод GetSetting(ByVal Name)
    Метод DeleteSetting(ByVal Name)
Версии, загрузка
    27.01.2008, 08.02.2008, 27.02.2008, 
    29.02.2008, 05.03.2008, 08.03.2008,
    15.03.2008, 31.03.2008, 03.04.2008,
    04.04.2008, 06.04.2008, 11.04.2008,
    15.04.2008, 22.04.2008, 12.07.2008,
    15.07.2008, 18.07.2008, 04.09.2008

Назначение

Библиотека ScriptCodingInfo.wsc - скриптовый COM-сервер, построенный по технологии Windows Script Component, с открытым исходным кодом. Это сценарий WSH, упакованный в COM-объект, который можно использовать в приложениях, написанных на любом языке, поддерживающем технологию COM и способном выступить в роли OLE-клиента.

Это открытый проект, к которому могут подключиться все желающие. Цель проекта - создать компонент, который дополняет стандартные возможности WSH (например, возможностями dynwrap.dll), а также инкапсулирует часто используемый код WSH, который неудобно бесконечно копировать из скрипта в скрипт.

Библиотека ScriptCodingInfo.wsc поставляется "как есть", без явных или подразумеваемых гарантий. В используете её на свой страх и риск. Если вы хотите использовать код библиотеки полностью или частично в своём проекте или самостоятельно опубликовать каким-либо способом код или описание этой библиотеки, пожалуйста, обязательно укажите ссылку на эту страницу.

Создайте новую тему на форуме, если:

Настоящая статья описывает компонент всегда в его последней версии. По мере появления новых версий статья исправляется и дополняется. История версий также ведётся, в виде перечисления. Примеры кода в настоящей статье приводятся на языке VBScript для административных скриптов Windows, если явно не указано иное.

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

Компонент предоставляет несколько COM-серверов (с различными ProgID), которые используются независимо. Каждый COM-сервер описан ниже отдельно. Для функционирования некоторых (не всех) COM-серверов потребуется библиотека dynwrap.dll, которую можно скачать, установить и использовать независимо. Процесс установки описан ниже. Для функционирования других COM-серверов могут потребоваться другие дополнительные библиотеки - смотрите описание каждого COM-сервера.

Многие COM-сервера библиотеки "ScriptCodingInfo.wsc" написаны как "pure WSH" и поэтому не требуют установки в системе никаких дополнительных компонентов. В любом случае, вам придётся устанавливать только то, что вы действительно собираетесь использовать, т.к. все COM-сервера библиотеки работают независимо. Например, если вам совершенно не нужен COM-сервер "ScriptCodingInfo.Win32API" и вы не собираетесь его использовать, то библиотека будет прекрасно работать и без установки dynwrap.dll.

Участники проекта: The gray Cardinal, alexii, wisgest, fps, Xameleon.

Установка

Скопируйте файл ScriptCodingInfo.wsc в любое удобное вам место, например:

C:\WINDOWS\system32\ScriptCodingInfo.wsc

Зарегистрируйте COM-сервер командой наподобие следующей:

regsvr32.exe "C:\WINDOWS\system32\ScriptCodingInfo.wsc"

Такая регистрация будет равносильна применению следующего reg-файла:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\ScriptCodingInfo.Win32API]

[HKEY_CLASSES_ROOT\ScriptCodingInfo.Win32API\CLSID]
@="{E96E32A2-AF06-4152-BFF2-08331755B52B}"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{E96E32A2-AF06-4152-BFF2-08331755B52B}]

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{E96E32A2-AF06-4152-BFF2-08331755B52B}\InprocServer32]
@="C:\\WINDOWS\\system32\\scrobj.dll"
"ThreadingModel"="Apartment"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{E96E32A2-AF06-4152-BFF2-08331755B52B}\ProgID]
@="ScriptCodingInfo.Win32API"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{E96E32A2-AF06-4152-BFF2-08331755B52B}\ScriptletURL]
@="file:///C:/WINDOWS/system32/ScriptCodingInfo.wsc"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{E96E32A2-AF06-4152-BFF2-08331755B52B}\VersionIndependentProgID]
@="ScriptCodingInfo.Win32API"



[HKEY_CLASSES_ROOT\ScriptCodingInfo.FileSystem]

[HKEY_CLASSES_ROOT\ScriptCodingInfo.FileSystem\CLSID]
@="{96AE6C76-AC01-4C05-9A4B-56E46CF1076C}"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{96AE6C76-AC01-4C05-9A4B-56E46CF1076C}]

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{96AE6C76-AC01-4C05-9A4B-56E46CF1076C}\InprocServer32]
@="C:\\WINDOWS\\system32\\scrobj.dll"
"ThreadingModel"="Apartment"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{96AE6C76-AC01-4C05-9A4B-56E46CF1076C}\ProgID]
@="ScriptCodingInfo.FileSystem"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{96AE6C76-AC01-4C05-9A4B-56E46CF1076C}\ScriptletURL]
@="file:///C:/WINDOWS/system32/ScriptCodingInfo.wsc"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{96AE6C76-AC01-4C05-9A4B-56E46CF1076C}\VersionIndependentProgID]
@="ScriptCodingInfo.FileSystem"

В ситуациях, когда у текущего пользователя не хватает прав для записи в соответствующие ключи реестра, можно зарегистрировать COM-компонент только для текущего пользователя, а не для компьютера в целом. В следующем примере (reg-файл) библиотека будет зарегистрирована в реестре только для текущего пользователя, что потребует прав только на запись в раздел HKEY_CURRENT_USER:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Classes\ScriptCodingInfo.Win32API]

[HKEY_CURRENT_USER\Software\Classes\ScriptCodingInfo.Win32API\CLSID]
@="{E96E32A2-AF06-4152-BFF2-08331755B52B}"

[HKEY_CURRENT_USER\SOFTWARE\Classes\CLSID\{E96E32A2-AF06-4152-BFF2-08331755B52B}]

[HKEY_CURRENT_USER\SOFTWARE\Classes\CLSID\{E96E32A2-AF06-4152-BFF2-08331755B52B}\InprocServer32]
@="C:\\WINDOWS\\system32\\scrobj.dll"
"ThreadingModel"="Apartment"

[HKEY_CURRENT_USER\SOFTWARE\Classes\CLSID\{E96E32A2-AF06-4152-BFF2-08331755B52B}\ProgID]
@="ScriptCodingInfo.Win32API"

[HKEY_CURRENT_USER\SOFTWARE\Classes\CLSID\{E96E32A2-AF06-4152-BFF2-08331755B52B}\ScriptletURL]
@="file:///C:/WINDOWS/system32/ScriptCodingInfo.wsc"

[HKEY_CURRENT_USER\SOFTWARE\Classes\CLSID\{E96E32A2-AF06-4152-BFF2-08331755B52B}\VersionIndependentProgID]
@="ScriptCodingInfo.Win32API"



[HKEY_CURRENT_USER\Software\Classes\ScriptCodingInfo.FileSystem]

[HKEY_CURRENT_USER\Software\Classes\ScriptCodingInfo.FileSystem\CLSID]
@="{96AE6C76-AC01-4C05-9A4B-56E46CF1076C}"

[HKEY_CURRENT_USER\SOFTWARE\Classes\CLSID\{96AE6C76-AC01-4C05-9A4B-56E46CF1076C}]

[HKEY_CURRENT_USER\SOFTWARE\Classes\CLSID\{96AE6C76-AC01-4C05-9A4B-56E46CF1076C}\InprocServer32]
@="C:\\WINDOWS\\system32\\scrobj.dll"
"ThreadingModel"="Apartment"

[HKEY_CURRENT_USER\SOFTWARE\Classes\CLSID\{96AE6C76-AC01-4C05-9A4B-56E46CF1076C}\ProgID]
@="ScriptCodingInfo.FileSystem"

[HKEY_CURRENT_USER\SOFTWARE\Classes\CLSID\{96AE6C76-AC01-4C05-9A4B-56E46CF1076C}\ScriptletURL]
@="file:///C:/WINDOWS/system32/ScriptCodingInfo.wsc"

[HKEY_CURRENT_USER\SOFTWARE\Classes\CLSID\{96AE6C76-AC01-4C05-9A4B-56E46CF1076C}\VersionIndependentProgID]
@="ScriptCodingInfo.FileSystem"

Если вы хотите использовать COM-сервера компонента, которые требуют библиотеки dynwrap.dll, вам придется зарегистрировать и эту библиотеку:

regsvr32.exe "C:\WINDOWS\system32\dynwrap.dll"

Это равносильно применению следующего reg-файла:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\DynamicWrapper]

[HKEY_CLASSES_ROOT\DynamicWrapper\CLSID]
@="{202774D1-D479-11d1-ACD1-00A024BBB05E}"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{202774D1-D479-11d1-ACD1-00A024BBB05E}]

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{202774D1-D479-11d1-ACD1-00A024BBB05E}\InProcServer32]
@="C:\\Windows\\system32\\dynwrap.dll"

В ситуациях, когда у текущего пользователя не хватает прав для записи в соответствующие ключи реестра, можно зарегистрировать COM-компонент только для текущего пользователя, а не для компьютера в целом. В следующем примере (reg-файл) библиотека dynwrap.dll будет зарегистрирована в реестре только для текущего пользователя, что потребует прав только на запись в раздел HKEY_CURRENT_USER:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Classes\DynamicWrapper]

[HKEY_CURRENT_USER\Software\Classes\DynamicWrapper\CLSID]
@="{202774D1-D479-11d1-ACD1-00A024BBB05E}"

[HKEY_CURRENT_USER\Software\Classes\CLSID\{202774D1-D479-11d1-ACD1-00A024BBB05E}]

[HKEY_CURRENT_USER\Software\Classes\CLSID\{202774D1-D479-11d1-ACD1-00A024BBB05E}\InProcServer32]
@="C:\\Windows\\system32\\dynwrap.dll"

Библиотеку ScriptCodingInfo.wsc можно использовать и без регистрации. Примеры создания объектов библиотеки:

' Объект "ScriptCodingInfo.FileSystem":
Set fs = GetObject("script:C:\WINDOWS\system32\ScriptCodingInfo.wsc#FileSystem")
' Объект "ScriptCodingInfo.Win32API":
Set api = GetObject("script:C:\WINDOWS\system32\ScriptCodingInfo.wsc#Win32API")

Если нужна библиотека dynwrap.dll (если вы хотите использовать COM-сервера компонента, которые требуют этой библиотеки), эту библиотеку придется регистрировать в любом случае. Библиотека dynwrap.dll может быть зарегистрирована полностью автоматически, при создании объекта компонента, который её требует, по следующему алгоритму:

  1. Разыскивается файл библиотеки dynwrap.dll. Вначале проверяется путь "%SystemRoot%\system32\dynwrap.dll". Если такого файла нет, файл библиотеки dynwrap.dll разыскивается рядом с файлом компонента ScriptCodingInfo.wsc (в том же каталоге) при условии, что компонент ScriptCodingInfo.wsc уже зарегистрирован в реестре, как описано выше (иначе путь к нему определить будет невозможно).
  2. Если файл библиотеки dynwrap.dll найден, производится попытка его регистрации для компьютера в целом (путем записи в реестр). Если эта попытка оказывается неудачной (например, не хватает прав), производится такая же попытка его регистрации для пользователя.

Чтобы проверить, удалось ли зарегистрировать библиотеку dynwrap.dll автоматически, вы можете использовать свойство DynamicWrapper COM-сервера:

Set api = CreateObject("ScriptCodingInfo.Win32API")
If Not api.DynamicWrapper Is Nothing Then
    WScript.Echo "Библиотека dynwrap.dll зарегистрирована."
Else
    WScript.Echo "Библиотека dynwrap.dll не зарегистрирована."
End If

Кроме того, можно зарегистрировать библиотеку dynwrap.dll программным способом явно, если путь к её файлу известен:

Set api = CreateObject("ScriptCodingInfo.Win32API")
api.RegDynWrap "C:\temp\dynwrap.dll"

При вызове метода RegDynWrap производится попытка регистрации dynwrap.dll для компьютера в целом (путем записи в реестр). Если эта попытка оказывается неудачной (например, не хватает прав), производится такая же попытка регистрации для пользователя. После этого вы опять можете использовать свойство DynamicWrapper COM-сервера, как было показано выше, чтобы проверить, удалось ли зарегистрировать библиотеку dynwrap.dll.

Обработка ошибок

Все COM-сервера библиотеки ScriptCodingInfo.wsc предоставляют свойство Version (только чтение), которое возвращает текущий номер версии.

Все COM-сервера библиотеки ScriptCodingInfo.wsc предоставляют ряд свойств, содержащих информацию о последней произошедшей ошибке (только чтение):


LastErrorSource Свойство Source стандартного объекта Err, доступного в WSH.
LastErrorDescription Свойство Description стандартного объекта Err, доступного в WSH.
LastErrorNumber Свойство Number стандартного объекта Err, доступного в WSH.
LastErrorMethod Имя метода библиотеки, в котором произошла ошибка (строка).
LastErrorReason Причина ошибки (строка), т.е. операция, при выполнении которой произошла ошибка, например, "create object", "find file" и т.п.
LastErrorInfo Дополнительная информация об ошибке (строка), например, имя ненайденного файла, несозданного объекта и т.п.

Пример использования:

Set fs = CreateObject("ScriptCodingInfo.FileSystem")
fs.WalkFolders("C:\System Volume Information")
WScript.Echo fs.LastErrorInfo
WScript.Echo fs.LastErrorMethod
WScript.Echo fs.LastErrorReason
WScript.Echo fs.LastErrorNumber
WScript.Echo fs.LastErrorDescription
WScript.Echo fs.LastErrorSource

Все COM-сервера библиотеки ScriptCodingInfo.wsc предоставляют событие onError, на которое можно подписаться. В обработчике события можно обратиться к вышеперечисленным свойствам, отслеживая таким образом все ошибки, а не только последнюю.

Пример использования:

Set fs = WScript.CreateObject("ScriptCodingInfo.FileSystem", "SCIFS_")
fs.WalkFolders("C:\System Volume Information")

Function SCIFS_onError()
    WScript.Echo "method: " & fs.LastErrorMethod
    WScript.Echo "reason: " & fs.LastErrorReason
    WScript.Echo "info: " & fs.LastErrorInfo
    WScript.Echo fs.LastErrorNumber
    WScript.Echo fs.LastErrorDescription
    WScript.Echo fs.LastErrorSource
    WScript.Echo
End Function

Пример подписки на события без регистрации COM-сервера:

Set fs = GetObject("script:c:\temp\ScriptCodingInfo.wsc#FileSystem")
WScript.ConnectObject fs, "SCIFS_"
fs.WalkFolders("C:\System Volume Information")

Function SCIFS_onError()
    WScript.Echo "method: " & fs.LastErrorMethod
    WScript.Echo "reason: " & fs.LastErrorReason
    WScript.Echo "info: " & fs.LastErrorInfo
    WScript.Echo fs.LastErrorNumber
    WScript.Echo fs.LastErrorDescription
    WScript.Echo fs.LastErrorSource
    WScript.Echo
End Function

Сервер ScriptCodingInfo.FileSystem

Не требует библиотек. Pure WSH.

COM-сервер предоставляет методы для работы с файловой системой: создание, очистка, обход, сравнение каталогов и т.п.

Метод CreateDirs(ByVal DirNameToCreate)

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

Set fs = CreateObject("ScriptCodingInfo.FileSystem")
fs.CreateDirs("C:\Temp\tmp1\tmp2\tmp3")

Метод ClearFolder(ByVal FolderToClear)

Полная очистка каталога без его удаления/пересоздания. Пример использования:

Set fs = CreateObject("ScriptCodingInfo.FileSystem")
fs.ClearFolder("C:\Temp\tmp1\")

Метод WalkFolders(ByVal FolderToWalk)

Рекурсивный обход папок. Возвращает массив объектов "Folder". Пример использования:

Set fs = CreateObject("ScriptCodingInfo.FileSystem")
For Each fld In fs.WalkFolders("C:\Temp")
    WScript.Echo fld.ShortPath
Next

Метод WalkFiles(ByVal FolderToWalk)

Рекурсивный обход файлов в папке. Возвращает массив объектов "File". Пример использования:

Set fs = CreateObject("ScriptCodingInfo.FileSystem")
For Each fl In fs.WalkFiles("C:\Temp")
    WScript.Echo fl.ShortPath
Next

Метод WalkFilesEx(ByVal FolderToWalk, ByVal Mask, ByVal ModifyDate, ByVal Flag)

Рекурсивный обход файлов в папке с фильтрующими параметрами, может использоваться для поиска файлов. Возвращает массив объектов "File". Параметры:

Примеры использования:

Set fs = CreateObject("ScriptCodingInfo.FileSystem")
' все файлы .ert на диске C:\, у которых дата модификации больше или равна "08.02.2008"
'For Each objItem In fs.WalkFilesEx("c:\", ".*\.ert$", "08.02.2008", False)
' все файлы .ert на диске C:\, у которых дата модификации меньше или равна "08.02.2008"
'For Each objItem In fs.WalkFilesEx("c:\", ".*\.ert$", "08.02.2008", True)
' все файлы .ert на диске C:\ (формально - у которых дата модификации больше или равна "01.01.1900")
'For Each objItem In fs.WalkFilesEx("c:\", ".*\.ert$", "01.01.1900", False)
' все файлы на диске C:\, у которых дата модификации больше или равна "08.02.2008 16:30:00"
For Each objItem In fs.WalkFilesEx("c:\", "", "08.02.2008 16:30:00", False)
    WScript.Echo objItem.Path
Next

Метод WalkFoldersEx(ByVal FolderToWalk, ByVal Mask, ByVal ModifyDate, ByVal Flag)

Рекурсивный обход папок с фильтрующими параметрами, может использоваться для поиска папок. Возвращает массив объектов "Folder". Параметры и использование - полная аналогия с методом WalkFilesEx. Пример использования:

Set fs = CreateObject("ScriptCodingInfo.FileSystem")
For Each fld In fs.WalkFoldersEx("C:\Windows", ".*\\\$.*\$$", "01.01.1900", False)
    WScript.Echo fld.Path
Next

Пример разыщет все папки внутри "C:\Windows", имя которых начинается и заканчивается на "$".

Метод EmptyFolders(ByVal FolderToWalk)

Рекурсивный поиск пустых папок в указанной папке. Возвращает массив объектов "Folder". Пример использования:

Set fs = CreateObject("ScriptCodingInfo.FileSystem")
For Each fld In fs.EmptyFolders("C:\")
    WScript.Echo fld.Path
Next

Метод CompareFolders(ByVal Path1, ByVal Path2, ByVal flSynch)

Рекурсивное сравнение и синхронизация каталогов. Параметры:

Сравниваются только файлы, по их наличию и по дате их модификации. Если flSynch=True, всё необходимое копируется "поверх" в нужном направлении (включая файлы readOnly), иначе возвращаются результаты сравнения - массив объектов класса FilePair. Каждый объект соответствует паре файлов, между которыми найдены различия (один из этих файлов может не существовать - в случае, если файл содержится в каталоге Path1, а в каталоге Path2 его нет, или наоборот).

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

Пример использования:

Set fs = CreateObject("ScriptCodingInfo.FileSystem")
'fs.CompareFolders "C:\Temp\Test\", "C:\Temp\Test2\", True
arr = fs.CompareFolders("C:\Temp\Test\", "C:\Temp\Test2\", False)
If TypeName(arr) = "Variant()" Then
    For Each Pair In arr
        WScript.Echo Pair.FileLeftPath, "<=>", Pair.FileRightPath
    Next
End If

Метод FindFile(ByVal FileNameForFind)

Рекурсивный поиск указанного файла на локальных жёстких дисках компьютера (разыскивается точное совпадение).

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

Пример использования:

Set fs = CreateObject("ScriptCodingInfo.FileSystem")
arrRes = fs.FindFile("calc.exe")
If arrRes(0) Then
    For i = 1 To UBound(arrRes)
        WScript.Echo arrRes(i)
    Next
End If

Сервер ScriptCodingInfo.Win32API

Требует библиотеки dynwrap.dll.

COM-сервер предоставляет обёртки различных функций Win32 API, а также различные методы, основанные на вызовах Win32 API.

Обёртка идентификаторов оконных сообщений

Многочисленные свойства (только чтение), возвращающие числовые значения идентификаторов оконных сообщений. Совпадают с константами, часто используемыми в различных средах программирования, например, "WM_NULL", "WM_CREATE" и т.д. Добавлены для удобства, чтобы эти константы не нужно было специально объявлять. Например:

Set api = CreateObject("ScriptCodingInfo.Win32API")
WScript.Echo api.WM_GETTEXT

Обёртка Beep(ByVal Freq, ByVal Duration)

Функция Beep библиотеки kernel32.dll.

Beep (ByVal dwFreq As Long, ByVal dwDuration As Long) As Long

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

Set api = CreateObject("ScriptCodingInfo.Win32API")
res = api.Beep(500, 100)
res = api.Beep(550, 100)
res = api.Beep(600, 100)
res = api.Beep(650, 100)
res = api.Beep(700, 700)
WScript.Sleep 200
res = api.Beep(700, 100)
res = api.Beep(650, 100)
res = api.Beep(600, 100)
res = api.Beep(550, 100)
res = api.Beep(500, 700)

Обёртка GetForegroundWindow()

Функция GetForegroundWindow библиотеки user32.dll.

GetForegroundWindow() As Long

Возвращает хэндл активного окна активного приложения (число). Пример использования:

Set api = CreateObject("ScriptCodingInfo.Win32API")
WScript.Echo api.GetForegroundWindow()

Метод GetTitleForegroundWindow()

Возвращает заголовок окна, находящегося на переднем плане. Пример использования:

Set api = CreateObject("ScriptCodingInfo.Win32API")
WScript.Echo api.GetTitleForegroundWindow()

Метод GetScreenResolution()

Возвращает массив из двух элементов, содержащий текущее разрешение экрана. Пример использования:

Set api = CreateObject("ScriptCodingInfo.Win32API")
Res = api.GetScreenResolution()
WScript.Echo Res(0) & "x" & Res(1)

Сервер ScriptCodingInfo.Text

Не требует библиотек. Pure WSH.

COM-сервер предоставляет различные методы для работы со строками, текстом и текстовыми файлами.

Метод FormatDateTimeForFilename(ByVal DateTime, ByVal Delim, ByVal Style)

Возвращает дату, отформатированную в виде, удобном для имён файлов (когда дата включается в имена файлов). Может пригодиться для "правильной" сортировки поименованных таким способом файлов в файловом менеджере. Параметры:

Примеры использования:

Set txt = CreateObject("ScriptCodingInfo.Text")
WScript.Echo "общая часть_" & txt.FormatDateTimeForFilename(Now, "_", 1) & ".txt"
WScript.Echo txt.FormatDateTimeForFilename(Now, "_", 2)
WScript.Echo txt.FormatDateTimeForFilename(Date, "_", 3)
WScript.Echo txt.FormatDateTimeForFilename(Time, "_", 4)
WScript.Echo txt.FormatDateTimeForFilename(Time, "_", 5)
WScript.Echo txt.FormatDateTimeForFilename("01.02.2008 23:59:59", "", 1)
WScript.Echo txt.FormatDateTimeForFilename("01.02.2008", "", 1)
WScript.Echo txt.FormatDateTimeForFilename("23:59", "", 1)

Метод DiffTextFiles(File1, File2, File3, title)

Сравнивает текстовые файлы по строкам. Параметры File1, File2, File3 - пути к файлам, третий параметр необязателен (четвёртый - тоже). Метод разыскивает все строки, которые есть в File2, но которых нет в File1. Если параметр File3 задан, найденные таким образом строки будут записаны в этот файл (если этот файл существует, он всегда дописывается). Если параметр File3 не задан, найденные таким образом строки будут просто возвращены методом (в виде многострочного текста). Если последний параметр title задан как True (и задан параметр File3), в файл File3 будет помещён заголовок вида:

"C:\Temp\file1.txt";"C:\Temp\file2.txt"

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

Пример использования:

Set txt = CreateObject("ScriptCodingInfo.Text")
txt.DiffTextFiles "C:\Temp\file1.txt", "C:\Temp\file2.txt", "C:\Temp\file3.txt", True
res = txt.DiffTextFiles("C:\Temp\file1.txt", "C:\Temp\file2.txt")
'WScript.Echo res
For Each str In Split(res, vbCrLf)
    WScript.Echo str
Next

Пустые строки файлов при сравнении обрабатываются точно так же, как и все остальные.

Метод работает только с уникальными строками. Если в файле File2 строка, которая отсутствует в файле File1, попадается несколько раз, в результаты сравнения она попадёт только один раз.

Метод DiffTextFiles2(File1, File2, delim, File3, title)

Метод во многом аналогичен предыдущему (DiffTextFiles), но работает не с уникальными строками, а сравнивает файлы построчно (каждая строка с каждой). Параметры:

Пример использования:

Set txt = CreateObject("ScriptCodingInfo.Text")
txt.DiffTextFiles2 "C:\Temp\file1.txt", "C:\Temp\file2.txt", "::", "C:\Temp\file3.txt", True
res = txt.DiffTextFiles2("C:\Temp\file1.txt", "C:\Temp\file2.txt")
For Each str In Split(res, vbCrLf)
    WScript.Echo str
Next

Сервер ScriptCodingInfo.Translator

Не требует библиотек. Pure WSH.

COM-сервер предоставляет методы и объекты, доступные в одних средах, но недоступные в других.

Свойство WScript

Возвращает стандартный объект WScript (только чтение). Предоставляет возможность использования стандартного объекта WScript там, где он недоступен непосредственно (например, в HTA). В частности, позволяет создавать объекты с подпиской на их события. Пример HTA-приложения:

<HTML>
<HEAD>
<META http-equiv='Content-Type' content='text/html; charset=windows-1251'>

<SCRIPT language='JavaScript' type='text/javascript'><!--
var WshScript=new ActiveXObject("ScriptCodingInfo.Translator"), WScript=WshScript.WScript;
alert(WScript.ScriptFullName);
WScript.Sleep(5000);
var WshShell=WScript.CreateObject("WScript.Shell");
var WshScriptExec=WshShell.Exec("cmd.exe");
WshScriptExec.StdIn.WriteLine("chcp 1251>nul");
WshScriptExec.StdIn.WriteLine("dir");
WshScriptExec.StdIn.WriteLine("exit");
alert(WshScriptExec.StdOut.ReadAll());

onunload=function () {WScript.Quit();};
// --></SCRIPT>

<SCRIPT language='VBScript' type='text/vbscript'><!--
Dim IE

Sub document_onclick()
  Set IE = WScript.CreateObject("InternetExplorer.Application", "IE_")
  IE.Visible = True
  WshScript.AddEvent "IE_OnQuit", GetRef("IE_OnQuit")
End Sub

Sub IE_OnQuit()
  IE.Visible = False 'чтобы увидеть следующее сообщение,
                     'т.к. фокус окну HTA не передаётся
  alert "IE_OnQuit: окно Internet Explorer будет закрыто."
End Sub
' --></SCRIPT>
</HEAD>

<BODY>
<P>При щелчке мышью по странице будет открыто окно Internet Explorer,
при закрытии которого будет выведено сообщение
«IE_OnQuit: окно Internet Explorer будет закрыто.».</P>

<P><SMALL>Повторный щелчок до закрытия Internet Explorer
может привести к ошибке.</SMALL></P>
</BODY></HTML>

При запуске этого hta происходит следующее:

При обращении к свойству WScript создаются два временных js-файла, которые запускаются по цепочке. Один из этих скриптов и транслирует свой объект WScript. Таким образом, этот скрипт находится в памяти до тех пор, пока вы используете полученный объект WScript. Вы должны явно вызвать WScript.Quit(), чтобы завершить процесс этого скрипта.

Метод AddEvent(EventName, EventHandler)

Позволяет добавить обработчик указанного события для объекта, созданного с помощью метода CreateObject транслируемого объекта WScript. Параметры:

Пример использования - см. описание свойства WScript.

Метод RemoveEvent(EventName)

Позволяет удалить обработчик указанного события для объекта, созданного с помощью метода CreateObject транслируемого объекта WScript.

Сервер ScriptCodingInfo.ConsoleCommands

Не требует библиотек. Pure WSH.

COM-сервер предоставляет методы для работы с консольными командами и методы, являющиеся обёртками различных консольных команд. Командный интерпретатор и файлы bat/cmd иногда предоставляют возможности, которые неудобно или крайне затруднительно реализовывать в скриптах под Windows Script Host. Данный COM-сервер призван частично компенсировать эти неудобства.

Метод RunCommand(ByVal Command)

Выполняет переданную консольную команду и возвращает её вывод. Параметр Command может содержать переводы строк, в этом случае исполняется набор команд, как в командном файле (CMD/BAT). Примеры:

Set cc = CreateObject("ScriptCodingInfo.ConsoleCommands")
WScript.Echo cc.RunCommand("""C:\Temp\test.cmd""")
WScript.Echo cc.RunCommand("dir")
WScript.Echo cc.RunCommand("@echo off" & vbCrLf & "chcp 1251>nul" & vbCrLf & "dir")

Метод GetIPAddress(ByVal ConnName)

Возвращает IP-адрес компьютера по указанному сетевому соединению (используется команда ipconfig). Указывайте свои сетевые соединения или однозначно идентифицирующие фрагменты их названий. Если указать несуществующее сетевое соединение, будет возвращена пустая строка. Пример:

Set cc = CreateObject("ScriptCodingInfo.ConsoleCommands")
WScript.Echo cc.GetIPAddress("по локальной сети")

Метод IsAlive(ByVal Host)

Получает имя компьютера или IP-адрес для проверки и возвращает True или False, в зависимости от того, отвечает компьютер, или нет (используется команда ping). Примеры:

Set cc = CreateObject("ScriptCodingInfo.ConsoleCommands")
WScript.Echo cc.IsAlive("www.script-coding.com")
WScript.Echo cc.IsAlive("localhost")
WScript.Echo cc.IsAlive("127.0.0.1")

Сервер ScriptCodingInfo.BinaryFile

Используется библиотека ADO (Microsoft ActiveX Data Object).

COM-сервер предоставляет методы для работы с двоичными файлами и кодировками текста.

Метод BinCode(file, str)

Если параметр str не задан, метод возвращает в виде строки бинарный файл file. Если параметр str задан, то эта строка будет записана в бинарный файл file. Таким образом, метод позволяет прочитать бинарный файл и сконвертировать полученные данные в строку, которая не содержит непечатаемых символов. В таком виде данные могут где-то храниться, затем можно прочитать сконвертированные ранее данные и восстановить бинарный файл на диске. Пример использования:

Set bf = CreateObject("ScriptCodingInfo.BinaryFile")
save = bf.BinCode("C:\Temp\test.jpg")
bf.BinCode "C:\Temp\test1.jpg", save

Метод FileCodePage(ByVal FileToConvert, ByVal SourceCharset, ByVal DestCharset)

Конвертирует указанный текстовый файл из одной кодировки в другую. Параметры:

Пример использования:

Set bf = CreateObject("ScriptCodingInfo.BinaryFile")
bf.FileCodePage "c:\Temp\test.txt", "cp866", "windows-1251"

Метод StrCodePage(ByVal StrToConvert, ByVal SourceCharset, ByVal DestCharset)

Конвертирует переданную строку из одной кодировки в другую и возвращает сконвертированную строку. Параметры:

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

Set bf = CreateObject("ScriptCodingInfo.BinaryFile")
WScript.Echo bf.StrCodePage("бНОПНЯ", "koi8-r", "windows-1251")
txt = CreateObject("Scripting.FileSystemObject").OpenTextFile("c:\Temp\test.txt", 1).ReadAll()
WScript.Echo bf.StrCodePage(txt, "windows-1251", "cp866")

Метод FilePatch(file, position, byte)

Производит патч бинарного файла по указанному смещению. Параметры:

Пример использования:

Set bf = CreateObject("ScriptCodingInfo.BinaryFile")
bf.FilePatch "C:\Temp\notepad.exe", &hAB, &hFF
bf.FilePatch "C:\Temp\notepad.exe", &hAC, &hFF
Set cc = CreateObject("ScriptCodingInfo.ConsoleCommands")
out = cc.RunCommand("fc /b C:\Temp\notepad.exe ""C:\Temp\Копия notepad.exe""")
WScript.Echo bf.StrCodePage(out, "windows-1251", "cp866")

Сервер ScriptCodingInfo.LogOut

Не требует библиотек. Pure WSH. Однако, программы, с помощью которых осуществляется вывод, должны быть, конечно, установлены.

COM-сервер предоставляет возможности для ведения логов в скриптах различными способами. Можно выводить записи лога:

COM-сервер позволяет удобно выводить запись лога в несколько мест одновременно (в любой комбинации) с помощью однократного вызова одного метода.

Флаги

Булевы значения, чтение и запись. По умолчанию все флаги имеют значение False.


EnableEcho Разрешает/запрещает вывод стандартным способом через WScript.Echo.
EnableFileOut Разрешает/запрещает вывод в файл.
EnableLogEvent Разрешает/запрещает вывод в журнал событий Windows.
EnableIE Разрешает/запрещает вывод в специальное окно Internet Explorer.
EnableMSWord Разрешает/запрещает вывод в окно документа MS Word.
EnableMSExcel Разрешает/запрещает вывод в окно документа MS Excel.
EnableOOoWriter Разрешает/запрещает вывод в окно документа OOo Writer.
EnableOOoCalc Разрешает/запрещает вывод в окно документа OOo Calc.

Свойство IncludeDateTime

Булево, чтение и запись. По умолчанию имеет значение False. Определяет, включать ли в вывод автоматически дату и время. Не влияет на вывод в журнал событий Windows.

Свойство WScript

Стандартный объект WScript, чтение и запись. По умолчанию имеет значение Nothing. Этому свойству должен быть явно присвоен стандартный объект WScript клиентского скрипта, если необходимо задействовать вывод стандартным способом через WScript.Echo. Пример такого присвоения:

Set lg = CreateObject("ScriptCodingInfo.LogOut")
Set lg.WScript = WScript

Свойство LogFilePath

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

Свойство EventType

Число, чтение и запись. Тип события, записываемого в журнал событий Windows (играет роль, если необходимо задействовать вывод в журнал событий Windows). Одна из следующих констант:

По умолчанию - leTypeInformation (4).

Свойство EventTarget

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

Свойство ScrollIE

Булево, чтение и запись. По умолчанию имеет значение False. Определяет, прокручивать ли автоматически содержимое окна Internet Explorer при выводе в него очередной записи лога.

Свойство Delimiter

Строка, чтение и запись. Разделитель для вывода текста по ячейкам в документ электронной таблицы. По умолчанию - символ табуляции. Применение - см. пример в описании метода Out(). Этим же разделителем автоматически отделяется и отметка даты-времени, если свойство IncludeDateTime установлено в True.

Метод ClearLogFile()

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

Метод Out(ByVal TextForOut)

Собственно вывод записи в лог. В параметре передаётся текст для вывода. Вывод осуществляется одновременно во все места, куда предварительно разрешено выводить флагами (см. выше раздел "Флаги"). Пример использования:

Set lg = CreateObject("ScriptCodingInfo.LogOut")
Set lg.WScript = WScript
lg.EnableEcho = True
lg.IncludeDateTime = True
Set FSO = CreateObject("Scripting.FileSystemObject")
lg.LogFilePath = FSO.GetParentFolderName(WScript.ScriptFullName) & "\log.txt"
lg.EnableFileOut = True
lg.EnableIE = True
lg.ScrollIE = True
lg.Out "Test"

Если разрешён вывод в окно Internet Explorer (флаг EnableIE), окно Internet Explorer появляется при первом вызове метода Out. В дальнейшем изменение значения флага EnableIE оказывает влияние только на вывод в это окно, но само окно уже всегда будет на экране (оно останется на экране и после завершения работы скрипта).

При выводе в файл лога он всегда дописывается, если он существует. Если необходимо перезаписать файл лога, воспользуйтесь методом ClearLogFile.

Пример вывода в MS Word и MS Excel:

Set lgo = CreateObject("ScriptCodingInfo.LogOut")
lgo.EnableMSExcel = True
lgo.Delimiter = "::"
For i=0 To 10
    lgo.Out "Текст" & "::" & "для" & "::" & "вывода."
    lgo.Out "Текст для вывода."
Next
lgo.EnableMSExcel = False
lgo.EnableMSWord = True
For i=0 To 10
    lgo.Out "Текст для вывода."
Next

Пример вывода в OOo Writer и OOo Calc:

Set lgo = CreateObject("ScriptCodingInfo.LogOut")
lgo.EnableOOoWriter = True
For i=0 To 10
    lgo.Out "Текст для вывода."
Next
lgo.EnableOOoWriter = False
lgo.EnableOOoCalc = True
lgo.Delimiter = "::"
For i=0 To 10
    lgo.Out "Текст" & "::" & "для" & "::" & "вывода."
    lgo.Out "Текст для вывода."
Next

Сервер ScriptCodingInfo.DialogHTA

Не требует библиотек. Pure WSH.

COM-сервер предоставляет возможности организации графического интерфейса путём конструирования произвольных окон средствами технологии HTA.

Метод CreateDialog(ByRef Params)

Создаёт окно и отображает его на экране. Способы использования и управления таким окном будут ясны из примера ниже. Метод возвращает объект "HTMLObjectElement", который предоставляет доступ к объектной модели HTML DOM окна HTA и позволяет осуществлять полный контроль над его содержимым и поведением. Вы можете использовать практически любые возможности технологии HTA, вставляя в это окно произвольную html-разметку, что открывает широчайшие возможности для организации графических интерфейсов. Если произошла ошибка, метод возвращает Nothing.

Параметр Params является словарём "Scripting.Dictionary", в котором передаются параметры тега "HTA:APPLICATION", которые определяют вид и функциональные возможности окна (см. пример ниже).

Механизм работы метода: метод создаёт hta-файл во временном каталоге пользователя, запускает этот файл на исполнение, а затем удаляет его. Для установления связи с окном HTA используется объект WebBrowser, который внедряется в окно HTA с помощью html-тега "object".

Окно HTA обрабатывает нажатие Escape, по которому производится закрытие окна. Нажатие F5 (обновление) заблокировано. Окно HTA также содержит внедрённый объект "MSScriptControl", который позволяет при необходимости получить хэндл окна для организации, например, модального диалога выбора папки (см. пример ниже).

Вы можете назначить обработчик события выгрузки (закрытия) формы и обработчики любых событий любых элементов формы непосредственно в своём скрипте с помощью функции GetRef (см. пример ниже).

Пример:

Option Explicit
Dim oDlg, oDict, oHTA, oBody
Dim ok, val_1, val_2, val_3, strHTML, ExitDo
'==================================================================================================
Sub HTA_OnUnload
    ExitDo = True
End Sub
Sub CloseHTA
    oHTA.document.parentWindow.close
End Sub
Sub OK_HTA
    val_1 = oHTA.document.parentWindow.input_1.value
    val_2 = oHTA.document.parentWindow.input_2.value
    val_3 = oHTA.document.parentWindow.input_3.value
    oHTA.document.parentWindow.close
    ok = True
End Sub
Sub BrowseFolder
    Dim oFolder, oShellApp, oFSO
    Set oShellApp = CreateObject("Shell.Application")
    Set oFSO = CreateObject("Scripting.FileSystemObject")
    Set oFolder = oShellApp.BrowseForFolder(oHTA.GetProperty("HWND"), "Выбор папки", 81, "")
    If Not oFolder Is Nothing Then
        If oFSO.FolderExists(oFolder.Self.Path) Then
            oHTA.document.parentWindow.input_3.value = oFolder.Self.Path
        End If
    End If
End Sub
'==================================================================================================
Set oDlg = CreateObject("ScriptCodingInfo.DialogHTA")
Set oDict = CreateObject("Scripting.Dictionary")
oDict.Add "CONTEXTMENU", "no"
oDict.Add "INNERBORDER", "no"
oDict.Add "SCROLL", "no"
oDict.Add "BORDER", "dialog"
oDict.Add "BORDERSTYLE", "raised"
oDict.Add "MAXIMIZEBUTTON", "no"
oDict.Add "MINIMIZEBUTTON", "no"
ok = False
Set oHTA = oDlg.CreateDialog(oDict)
If oHTA Is Nothing Then
    WScript.Echo "Не удалось получить связь с окном HTA."
    WScript.Quit
End If
' назначаем обработчик события выгрузки (закрытия) формы
oHTA.document.body.onunload = GetRef("HTA_OnUnload")
' задаём размеры формы
oHTA.document.parentWindow.resizeTo 350, 320
' задаём заголовок окна
oHTA.document.title = "Заголовок диалога"
' получаем объет тела HTML-документа
Set oBody = oHTA.document.getElementsByTagName("body")(0)
' задаём цвет фона
oBody.bgcolor = "#E0E0E0"
' формируем строку HTML-кода
strHTML = ""
strHTML = strHTML & "<P>Введите текстовое значение:</P>"
strHTML = strHTML & "<INPUT id=input_1 size=50>"
strHTML = strHTML & "<P>Выберите файл:</P>"
strHTML = strHTML & "<INPUT id=input_2 type=file size=37>"
strHTML = strHTML & "<P>Выберите папку:</P>"
strHTML = strHTML & "<INPUT id=input_3 size=37>"
strHTML = strHTML & "<BUTTON id=bBrowse>Обзор...</BUTTON>"
strHTML = strHTML & "<BR><BR>"
strHTML = strHTML & "<BUTTON id=bOK>    О'кей     </BUTTON>"
strHTML = strHTML & "          "
strHTML = strHTML & "     "
strHTML = strHTML & "<BUTTON id=bCancel>Отменить</BUTTON>"
' записываем HTML-код в тело документа
oBody.innerHTML = strHTML
' назначение событий кнопкам
oHTA.document.parentWindow.bOK.onclick = GetRef("OK_HTA")
oHTA.document.parentWindow.bCancel.onclick = GetRef("CloseHTA")
oHTA.document.parentWindow.bBrowse.onclick = GetRef("BrowseFolder")
Do ' ожидание закрытия окна HTA
    WScript.Sleep 100
Loop Until ExitDo
If ok Then
    WScript.Echo "Введено текстовое значение: " & val_1
    WScript.Echo "Выбран файл: " & val_2
    WScript.Echo "Выбрана папка: " & val_3
Else
    WScript.Echo "Окно HTA было закрыто кнопкой ""Отменить""."
End If

Сервер ScriptCodingInfo.Network

Не требует библиотек. Pure WSH.

COM-сервер предоставляет возможности для работы с сетью.

Метод GetComputers(domain)

Метод возвращает массив с именами компьютеров, как они видны в папке "Сетевое окружение". Имена компьютеров возвращаются в формате "ИмяКомпьютера.ИмяДоменаИлиРабочейГруппы". Если параметр domain задан (строка), возвращаются имена компьютеров только из этого домена или рабочей группы. Пример:

Set ntw = CreateObject("ScriptCodingInfo.Network")
For Each comp In ntw.GetComputers()
    WScript.Echo comp
    WScript.Echo Split(comp, ".")(0) ' имя компьютера
    WScript.Echo Split(comp, ".")(1) ' имя домена или рабочей группы
    WScript.Echo
Next

Сервер ScriptCodingInfo.Settings

Не требует библиотек. Pure WSH.

COM-сервер предоставляет возможности для хранения строковых значений между сессиями скрипта для текущего пользователя Windows. Данный механизм также может использоваться для передачи данных между скрипт-процессами.

Сами значения хранятся во временных файлах в каталоге %APPDATA%\ScriptCodingInfo\. Имена значений хранятся в реестре, в разделе HKEY_CURRENT_USER\Software\ScriptCodingInfo.Settings\.

Пример остановки одного скрипта с помощью другого. Останавливающий скрипт:

Set sett = CreateObject("ScriptCodingInfo.Settings")
sett.SaveSetting "signal", "stop"

Останавливаемый скрипт:

Set sett = WScript.CreateObject("ScriptCodingInfo.Settings", "SCI_")
Do
    WScript.Echo "Ожидание..."
    WScript.Sleep 1000
    Signal = sett.GetSetting("signal")
Loop Until Not IsNull(Signal)
sett.DeleteSetting "signal"
WScript.Echo "Получен сигнал остановки."
WScript.Quit

Sub SCI_OnError()
    WScript.Echo sett.LastErrorInfo
End Sub

Метод SaveSetting(ByVal Name, ByVal Value)

Метод сохраняет значение Value под именем Name. Пример:

Set sett = CreateObject("ScriptCodingInfo.Settings")
sett.SaveSetting "myvalue", "test"
WScript.Echo sett.GetSetting("MYVALUE")
sett.DeleteSetting "myValue"

Метод GetSetting(ByVal Name)

Метод возвращает значение под именем Name. Пример - см. выше в описании метода SaveSetting.

Метод DeleteSetting(ByVal Name)

Метод удаляет значение под именем Name. Пример - см. выше в описании метода SaveSetting.

Версии, загрузка

27.01.2008

Первая версия.

Объект "ScriptCodingInfo.FileSystem" версии 0.005 с методами CreateDirs, ClearFolder, WalkFolders и WalkFiles.

Объект "ScriptCodingInfo.Win32API" версии 0.004 с обёртками идентификаторов оконных сообщений, Beep, GetForegroundWindow, SendMessage и методом GetTitleForegroundWindow.

Свойства Version, LastErrorSource, LastErrorDescription, LastErrorNumber, LastErrorMethod, LastErrorReason, LastErrorInfo и событие onError у обоих объектов.

Скачать (7 120 байт).

08.02.2008

Объект "ScriptCodingInfo.FileSystem" версии 0.006. Добавлен метод WalkFilesEx.

Объект "ScriptCodingInfo.Win32API" версии 0.005. Обёртка SendMessage удалена в виду несостоятельности её реализации на данный момент. Метод GetTitleForegroundWindow переписан на JScript, обойдена проблема невозможности получения достаточно длинных заголовков окон.

Скачать (7 397 байт).

27.02.2008

Объект "ScriptCodingInfo.FileSystem" версии 0.007. Добавлен метод WalkFoldersEx, косметические изменения в коде.

Объект "ScriptCodingInfo.Win32API" версии 0.006. Косметические изменения в коде.

Добавлен объект "ScriptCodingInfo.Text" версии 0.001 с методом FormatDateTimeForFilename.

Скачать (8 158 байт).

29.02.2008

Объект "ScriptCodingInfo.FileSystem" версии 0.008. Добавлен метод EmptyFolders.

Добавлен объект "ScriptCodingInfo.Translator" версии 0.001 со свойством WScript и методами AddEvent и RemoveEvent.

Скачать (9 341 байт).

05.03.2008

Добавлен объект "ScriptCodingInfo.ConsoleCommands" версии 0.001 с методами RunCommand, GetIPAddress и IsAlive.

Скачать (10 603 байт).

08.03.2008

Добавлен объект "ScriptCodingInfo.BinaryFile" версии 0.001 с методами BinCode, FileCodePage, StrCodePage и FilePatch.

Скачать (11 554 байт).

15.03.2008

Объект "ScriptCodingInfo.Win32API" версии 0.007, "ScriptCodingInfo.Translator" версии 0.002, "ScriptCodingInfo.ConsoleCommands" версии 0.002, "ScriptCodingInfo.BinaryFile" версии 0.002. Косметические изменения в коде.

Объект "ScriptCodingInfo.FileSystem" версии 0.009. Добавлен метод CompareFolders.

Скачать (12 776 байт).

31.03.2008

Объект "ScriptCodingInfo.Text" версии 0.002. Добавлен метод DiffTextFiles.

Скачать (13 193 байт).

03.04.2008

Объект "ScriptCodingInfo.Text" версии 0.003. Исправлены ошибки в методе DiffTextFiles, иногда приводившие к блокированию файлов после завершения работы метода.

Скачать (13 225 байт).

04.04.2008

Объект "ScriptCodingInfo.Text" версии 0.004. В метод DiffTextFiles добавлен четвёртый параметр.

Скачать (13 387 байт).

06.04.2008

Добавлен объект "ScriptCodingInfo.LogOut" версии 0.001 со свойствами EnableEcho, EnableFileOut, EnableLogEvent, EnableIE, IncludeDateTime, WScript, LogFilePath, EventType, EventTarget, ScrollIE и методами ClearLogFile, Out.

Скачать (15 139 байт).

11.04.2008

Объект "ScriptCodingInfo.Text" версии 0.005. Добавлен метод DiffTextFiles2.

Скачать (15 781 байт).

15.04.2008

Объект "ScriptCodingInfo.LogOut" версии 0.002. Добавлены свойства EnableMSWord, EnableMSExcel, Delimiter и возможность вывода в окно документа MS Word, MS Excel.

Скачать (16 324 байт).

22.04.2008

Объект "ScriptCodingInfo.LogOut" версии 0.003. Добавлены свойства EnableOOoWriter, EnableOOoCalc и возможность вывода в окно документа OOo Writer, OOo Calc.

Скачать (16 779 байт).

12.07.2008

Добавлен объект "ScriptCodingInfo.DialogHTA" версии 0.001 с методом CreateDialog.

Скачать (18 627 байт).

15.07.2008

Добавлен объект "ScriptCodingInfo.Network" версии 0.001 с методом GetComputers.

Скачать (18 907 байт).

18.07.2008

Добавлен объект "ScriptCodingInfo.Settings" версии 0.001 с методами SaveSetting, GetSetting и DeleteSetting.

Объект "ScriptCodingInfo.Win32API" версии 0.008. Добавлен метод GetScreenResolution.

Скачать (19 862 байт).

04.09.2008

Объект "ScriptCodingInfo.FileSystem" версии 0.010. Добавлен метод FindFile.

Скачать (20 428 байт).

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

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

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