Всем привет, с вами снова автор блога scriptcoding.ru. Сегодня мы рассмотрим такой элемент управления ActiveX как JSSys3.Ops. данная библиотека содержит довольно много функциональных возможностей: работа с файловой системой, создание оконного интерфейса, работа с файлами и многое другое.
Для доступа к объекту нужно сначала получить на него ссылку и сохранить ее в заданной переменной, например:
Язык VBScript:
Set sys = CreateObject("JSSys3.Ops") |
Язык JScript:
sys = WScript.CreateObject("JSSys3.Ops"); |
Я буду одновременно давать описание функциональных возможностей данного элемента управления ActiveX и приводить примеры на языке vbscript сервера сценариев Windows Script Host. Ссылку на компонент я дам ниже, вам останется его только зарегистрировать в системе и все – можно приступать к его использованию. Параллельно можете ознакомится с такими элементами управления ActiveX как JSForm.Window и Chilkat.Spider.
Работа с системной информации – элемент управления ActiveX
GetOpVersion(vOSVersion) – Информация об операционной системе. Функция возвращает 0 – если удача или 1 – если провал. При удаче переменная vOSVersion будет хранить в себе массив из 4 элементов:
- a(0) = Номер платформы: 1-9x 2-NT
- a(1) = Номер версии основной
- a(2) = Номер версии второстепенный
- a(3) = Номер сборки
- a(4) = Информация о версии: В 9x это будет любая дополнительная информация. В NT это будет номер пакета обновления.
r = sys.GetOpVersion(a) for i=0 to 3 mess=mess & a(i) & VbCrLf Next WScript.echo mess |
GetMemory(vTotal, vInUse) – Информация об общем и используемом размере оперативной памяти. В случае успеха вернет 0, а неудачи - 1. Параметр vTotal вернет установленную память RAM в MB, а параметр vInUse - покажет используемую RAM в MB
r = sys.GetMemory(total,used) mess="Общий объем ОЗУ: " & total & " MB" & VbCrLf & "Используемый объем ОЗУ: " & used & " MB" WScript.echo mess GetCurUser() – текущее имя пользователя. mess = sys1.GetCurUser WScript.echo mess GetCompName() – имя компьютера. mess = sys1. GetCompName WScript.echo mess |
ChangeCompName(vNewName) - Изменение имени компьютера. vNewName – новое имя. Если vNewName превышает 15 символов, то будут использоваться только 15 левых символов. Функция элемента управления ActiveX возвращает 0 при удаче или 1 при провале.
r = sys1.ChangeCompName("COMPNEW") |
ChangeDriveName(vDriveLetter, vNewName) – задает метку тома. Тут vDriveLetter метка, а vNewName – имя тома. Вернет 0 при удаче или 1 при провале.
GetColorDepthBPP() – Глубина дисплея в бит на пиксель: 0 при ошибке.
mess = sys1.GetColorDepthBPP |
GetDesktopPixels(vDeskWidth, vDeskHeight) - Ширина и высота рабочего стола (за исключением панели задач). Покажет 0 при удаче или 1 при провале. Тут vDeskWidth и vDeskHeight – ширина и высота.
mess = sys2.GetDesktopPixels(w, h) mess="Высота - " & w & VbCrLf & "Ширина - "& h WScript.echo mess |
GetScreenPixels(vScreenWidth, vScreenHeight) – Ширина и высота рабочего стола: 0 при удаче или 1 при провале. Тут vScreenWidth и vScreenHeight – ширина и высота.
GetSystemColor(vItem) - Значение цвета графического интерфейса для различных предметов. В случае успеха функция вернет 6-символьный шестнадцатеричный код цвета. Если аргумент vItem не действует, то функция покажет "0". ActiveX элемент управления
r = sys2.GetSystemColor("Desktop") |
Успех может быть проверен с помощью условия :
If Len (r) = 6 Then MsgBox "успех" |
Аргумент vItem может принимать следующие значения:
- "TitleBar" – Активный_заголовок_окна
- "TitleBar2" – Активный_заголовок_окна - правильный градиент цвета
- "TitleBarText" – Активный_заголовок_окна – текст
- "InactiveTitleBar" – Неактивный_заголовок_окна
- "InactiveTitleBar2" – Неактивный_заголовок_окна - правильный градиент цвета
- "InactiveTitleBarText" – Неактивный_заголовок_окна – текст
- "Buttons" - Цвет для тела окон и кнопок
- "Scrollbars" – Цвет_прокрутки
- "Desktop" – Фон рабочего стола
- "ButtonText" - Текст подписи к кнопкам
- "Selection" – Цвет_подсветки (по умолчанию темно-синий)
- "SelText" - Цвет самого текста в выделенном тексте
- "Menu" - Окна фона меню (как правило, такой же, как цвет кнопки)
- "MenuText" - Текст меню
- "WindowBackground" - фон внутри (по умолчанию белый)
- "WindowBackText" - текст внутри (по умолчанию черный)
SetSystemColor(vItem, vHexCode) - Установить значение цвета графического интерфейса для различных предметов. vHexCode - любой действующий 6-значный шестнадцатеричный номер: 0 при успехе, 1 - недействительный vItem, 2 - недействительный vHexCode, 3 –установлен, 4 – не удалось установить значение, 5 – неизвестная ошибка.
r = sys2.SetSystemColor("Desktop", "0000FF") ' работа с элементом управления ActiveX |
GetDriveInfo() - Информация о фиксированных дисках. В случае успеха будут оказаны строки, разделенные запятыми всех основных буквы, как путь к диску [пробел] общий размер [пробел] свободное пространство (Пример: "C: \ 2000 329, D: \ 4500 +1382"). В случае ошибки возвращается "".
GetDefaultProgram(vExt) - Путь по умолчанию к программе для типа документа (vExt).
v = sys2.GetDefaultProgram("bmp") |
SetWallpaper(vFilePath, vStyle) – установить обои рабочего стола, тут vFilePath путь к .BMP файлу, vStyle принимает значения "center", "tile" или "stretch". 0 при успехе, 1 – ошибка аргумента vFilePath, 2 – ошибка аргумента vStyle, 3 – неудача.
r = sys3.SetWallpaper("C:\pic1.bmp", "stretch") |
SetBackColor(vHexCode) – установить цвет фона рабочего стола. vHexCode может быть любым допустимым 6-символьный шестнадцатеричный код. 0 при успехе, 1 – ошибка vHexCode, 2 – неудача. Элемент управления ActiveX.
r = sys3.SetBackColor("0000FF") |
TimerStart() – запуск таймера.
TimerStop() – остановка таймера, возвращает результат времени работы
r = sys3.TimerStop |
PrintFile(vFilePath1) - Распечатать документ с программой по умолчанию.
r = sys3.PrintFile("C:\windows\desktop\file.txt") |
GetProcessList(vProcList, vNumberProcs) – Список процессов. Параметр vProcList - разделенные запятыми строки пути к документу (C:\Windows\explorer.exe, C:\Windows\System\Shell32.dll...), параметр vNumberProcs - номер запущенных процессов.
r = sys3.GetProcessList(s, num) |
Диалоговые окна – элемент управления ActiveX JSSys3.Ops
GetOpenWindowTitles(vTitles As Variant) - Список открытых, видимых "верхнего уровня" окон по названию текста заголовка. Эта функция может быть использована для получения названия необходимых заголовков для процедуры CloseProgram. Параметр vTitles - массив заголовков окон. Если метод не работает, или, если нет открытых окон, vTitles возвращает "".
r = sys4.GetOpenWindowTitles(a) |
GetActiveWindowTitle() - Текст заголовка активного окна. Эта функция может быть использована для получения названия необходимых заголовков для процедуры CloseProgram.
r = sys4.GetActiveWindowTitle() |
SetWindowActive(vTitle1, vBoolMin) – сделать активным приложение. vTitle1 - текст активного заголовка. Значение может быть получено с помощью функции GetOpenWindowTitles. vBoolMin – логическое значение, True – минимизировать все.
r = sys4.SetWindowActive("Untitled - Notepad", True) |
CloseProgram(vTitle1, vForce) – закрыть запущенную программу. vTitle1 – заголовок, vForce принимает значения 1 (запрос на закрытие или сохранение данных) или 2 (закрытие программы без сохранения - критическое).
Sys4.CloseProgram "Untitled - Notepad", 2 ' ActiveX элементом управления |
OpenDlg(vTitle1, vExt, vInitDir) – диалоговое окно для открытия файла. vTitle1 – заголовок, vExt - расширение по умолчанию. Может быть "", vInitDir – путь к начальной папке. Может быть "".
r = sys5.OpenDlg("Open File", "txt", "C:\") |
OpenMultiDlg(vTitle2, vExt, vInitDir) - диалоговое окно для открытия документа с несколькими вариантами. vTitle2 – заголовок_окна, vExt - расширение по умолчанию. Может быть "", vInitDir – путь к начальной папке. Может быть "".
r = sys5.OpenMultiDlg("Select Files", "txt", "C:\") |
SaveDlg(vTitle2, vExt) – диалоговое_окно для сохранения. vTitle2 – заголовок_окна, vExt - расширение по умолчанию. Может быть "".
r = sys5.SaveDlg("Save File", "log") |
ColorDlg() – диалоговое_окно выбора цвета. Возвращает выбранный цвет, как 6-символьный шестнадцатеричный код.
r = sys5.ColorDlg |
BrowseForFolder(vTitle3) – диалоговое_окно для выбора папки. vTitle3 – заголовок_окна.
r = sys6.BrowseForFolder("Please select folder.") |
Получение свойств файла - Объект PEFile
Объект PEFile доступен через объект Ops, он похож на объект FileSystemObject. PEFile предоставляет информацию для свойств документа для PE (Portable Executable), в том числе EXE, DLL, OCX и DRV. Для подключения объекта используем метод GetPEFile:
Set Ob = sys6.GetPEFile(FilePath) ' использование элемента управления ActiveX |
Тут FilePath – путь к файлу. Если возникнет ошибка, то метод возвратит: 1 – путь к недоступен, 2 - не является документом PE, 3 – не удалось получить информацию, 4 – неизвестная ошибка. В случае успеха метод возвращает объект PEFile.
Свойства объекта PEFile:
- CompanyName (например: "Ace Audio Co.")
- FileVersion (например: 1.02.44.0113)
- DateCreated (например: "4/23/99 10:22:00 PM") [возвращает "", если дата не доступна]
- DateLastModified (например: "4/23/99 10:22:00 PM")
- ProductVersion - версии программного продукта
- ProductName - (например: "Ace Music Player")
- FileDescription - (например: "Ace Music Player Audio Library")
- Size – размер в KB.
- Attributes – атрибуты, позволит получить любую комбинацию из типичных признаков: 0-нормальный/архивный, 1-только чтение, 2-скрытый, 4-системный.
- Name (например: "AMPAUD.DLL")
Работа с .INI файлами
GetIniSectionVals(vFilePath1, vSection) - Список .INI раздела пар ключ-значение. vFilePath1 – путь к .INI, vSection – название секции. Вернет все значения в секции ключ = значение, в нуль-разделители строк. Возврат может быть присвоен массивом a = Split(v, Chr(0)). Возвращает "", если метод не работает.
v = sys6.GetIniSectionVals("C:\Windows\Program1.ini", "Settings") |
GetIniSectionkeys(vFilePath1, vSection) - Список ключ = имя.
v = sys6.GetIniSectionKeys("C:\Windows\Program1.ini", "Settings") |
GetIniSectionNames(vFilePath1) – получить название всех секций.
v = sys6.GetIniSectionNames("C:\Windows\Program1.ini") ' элемент управления ActiveX |
GetIniVal(vFilePath2, vSection, vKeyName) - Одно значение из .INI.
v = sys7.GetIniVal("C:\Windows\Program1.ini", "Settings", "Backcolor") |
WriteIniSection(vFilePath2, vSection, vKeyList) - Записать раздел с ключами. vFilePath2 – полный путь к _INI_файлу_, vSection – название новой секции для записи, vKeyList должна быть строка ключ-значение разделителем пар Chr (0) с Chr (0) в конце. Например:
s = "key1=value1" & chr(0) & "key2=value2" & chr(0) & "key3=value3" & chr(0) |
r = sys7.WriteIniSection("C:\Windows\Program1.ini", "Settings", s) |
WriteIniVal(vFilePath2, vSection, vKeyName, vValue) - Запись одного значения или удаление одного ключа или раздела.
Для записи значения:
r = sys7.WriteIniVal("C:\Windows\Program1.ini", "Settings", "BackColor", "0000FF") |
Для удаления ключа используется "null" для параметра vValue:
r = sys7.WriteIniVal("C:\Windows\Program1.ini", "Settings", "BackColor", "null") 'удаление "Backcolor" ключа ' работа с элементом управления ActiveX |
Для удаления раздела используется "null" для параметров vKeyName и vValue:
r = sys7.WriteIniVal("C:\Windows\Program1.ini", "Settings", "null", "null") 'удаление "Settings" секции |
True при успехе или False в случае ошибки.
Работа с ADS файлами - работа с элементом управления ActiveX JSSys3.Ops
IsNTFS() – определяет, является ли файловая система типа NTFS. Значения True или False.
ListStreams(vFilePath2, AFiles, ASizes) - Список ADS файлов, прикрепленных к данному файлу или папке. Тут vFilePath2 – полный путь к документу или папке, AFiles –массив имен, ASizes - массив размера в байтах.
LNum = Ob.ListStreams("C:\", AFils, ASz). ' элемент ActiveX управления |
ReadStream(vFilePath3, vLen) - Читает часть или все ADS файл как текстовую строку. vFilePath3 - Полный путь к ADS. Пути к ADS имеют формат [путь_к_файлу]: [ADS имя]. vLen - Количество байт для чтения. Используйте 0 для чтения всего содержимого.
s = Ob.ReadStream("C:\file1.txt:stream1.txt", 0) |
DeleteStream(vFilePath3) - Удаляет ADS файл.
s = Ob.DeleteStream("C:\file1.txt:stream1.txt") |
И так, в этой статье мы рассмотрели такой элемент управлении ActiveX как JSSys3.Ops, подключив который можно выполнять различные задачи в программных сценариях Windows Script Host и не только.
Спасибо за внимание. Автор блога Владимир Баталий