Programming: Visual Basic
Visual Basic и Системный Реестр Windows
Источники: ,
Системный
Реестр (Registry) Windows это база данных для хранения
системной и пользовательской информации в Windows. Системный
Реестр состоит из двух файлов - SYSTEM.DAT, в нем содержится
информация о конкретном компьторе, и USER.DAT, содержащий
пользовательские установки и данные. Для работы с Системным
Реестром обычно применяют специальный редактор Системного Реестра -
REGEDIT.EXE, или специальные функции Win32 API, или
некоторые встроенные функции и операторы Visual
Basic. Остановимся на последнем и рассмотрим работу с данными
в Системном Реестре с помощью Visual Basic. Для этого Вам
придется сделать следующее:
- Запустите редактор Системного Реестра, он находится в каталоге
Windows - C:\Windows\Regedit.exe. При запуске редактора в
окне появятся шесть ключей-папок (эти ключи как раз и представляют
содержимое файлов SYSTEM.DAT и USER.DAT). Выберите
ключ HKEY_CURRENT_USER (этот ключ входит в состав файла
USER.DAT) и щелкните на плюсике "+". В раскрывшемся
списке выберите подключ - Software - и раскройте его.
Найдите во вновь открывшемся списке папку - VB and VBA Program
Setting - это и есть раздел Системного Реестра куда с помошью
встроенных операторов и функций Visual Basic Вы можете
записывать и считывать необходимую Вам информацию.
- Запустите Visual Basic и откройте новый проект.
Поместите на форму четыре командные кнопки и в свойстве
Caption" , каждой из них введите соответственно:
SaveSetting, GetSetting, GetAllSettings,
DeleteSetting. Запомните проект под именем, скажем,
MYREG.
А теперь приступим к работе.
Запись значений с помощью оператора
SaveSetting
Дважды щелкните на командной кнопке SaveSetting и в
раскрывшемся окне введите следующий код:
Запустите программу на выполнение и нажмите на кнопку
SaveSetting, потом переключитесь на окно редактора Системного
Реестра. Откройте папку VB and VBA Program Setting и там Вы
увидите вновь созданную папку MYREG, а в ней подраздел с
именем PortSettings. Открыв его, в левом окне редактора, Вы
прочтете запись которую только что создали - Connect
using "COM1".
***Если Вы правильно выполнили
все что написано, но ничего не увидели, не волнуйтесь. Нажмите
клавишу F5 (Refresh) и перед вами появится искомая
запись.
Теперь расмотрим по-подробнее, что Вы написали в окне
кода. Синтаксис оператора SaveSetting
следующий: SaveSetting VBKeyName, Section, Key, Setting,
где:
- SaveSetting - имя самого оператора;
- VBKeyName - строковое значение, которое
является именем внутреннего подраздела VB and VBA Program
Setting. В нашем случае онo будет носить имя нашей программы -
MYREG, т.к. мы использовали свойство объекта
App.Title;
- Section - строковое значение,
которое является именем внутреннего подраздела VBKeyName. В
нашем случае оно носит имя PortSettings;
- Key - строковое значение, которое
представляет имя параметра в созданном подразделе PortSettings.В
подразделе может быть много параметров.
- Setting - строковое значение, которое
Вы хотите присвоить данному параметру. В нашем случае параметру
Connect using приваиваем значение COM1;
Чтение значений с помощью функции
GetSetting()
***При выполнении нижеследующих действий объявите в разделе
Declaration формы переменные CrtMsg As String, MySet As
Variant
Чтобы получить значение определенного параметра, нужно
использовать функцию GetSetting().Дважды щелкните на
командной кнопке GetSetting и в раскрывшемся окне введите
следующий код:
Private Sub Command2_Click() MySet =
GetSetting(App.Title, "PortSettings", "Connect using",
CrtMsg) Debug.Print MySet End
Sub
Запустите программу на выполнение и намите на кнопку
GetSetting. В окне Immediate Вы увидете введенное
ранее (оператором SaveSetting) значение -
COM1. Теперь расмотрим подробнее, что Вы написали в окне
кода. Синтаксис оператора GetSetting следующий: MySet =
GetSetting ( VBKeyName, Section, Key [, Default ] )
- MySet - строка для хранения возвращаемого
функцией GetSetting значения;
- GetSetting - имя самой функции;
- VBKeyName - строковое значение, которое
является именем внутреннего подраздела VB and VBA Program
Setting. Мы используем свойство объекта App.Title, т.к.
хотим прочесть информацию из созданного нашей программой раздела ;
- Section - строковое значение,
которое является именем внутреннего подраздела VBKeyName. В
нашем случае он носит имя PortSettings;
- Key - строковое значение, которое
представляет имя параметра в созданном подразделе
PortSettings.В подразделе может быть много параметров и
по-этому, мы указываем на желаемое - Connect
using;
Default -
необязательный аргумент, представляющий строковое значение,
которое будет возвращено функцией в случае ошибки (если такого
параметра нет). Функция возвращает строковое значение, присвоенное
аргументу Default. К примеру CrtMsg = "Такого
параметра не существует.".
Чтение значений с помощью функции
GetAllSettings()
***Предварительно добавте следующий код к имеющемуся коду
командной кнопки SaveSetting: SaveSetting
App.Title, "PortSettings", "Data bits",
"8" SaveSetting App.Title, "PortSettings",
"Parity", "None" SaveSetting App.Title,
"PortSettings", "Stop bits", "1" SaveSetting
App.Title, "PortSettings", "Flow control",
"None" Произведите операцию записи данных в Системный
Реестр.
Для получения из реестра массива, содержащего все значения
параметров из определенного подраздела (например,
PortSettings) применяется функция GetAllSettings().
Для этого дважды щелкните на командной кнопке GetAllSettings
и в раскрывшемся окне введите следующий код:
Private Sub Command3_Click() Dim intSettings As
Integer MySet = GetAllSettings(App.Title,
"PortSettings") For intSettings = LBound(MySet,
1) To UBound(MySet, 1)
Debug.Print MySet(intSettings, 0), MySet(intSettings,
1) Next intSettings End
Sub
Запустите программу на выполнение и нажмите на кнопку
GetAllSettings. В окне Immediate Вы увидете введенные
ранее (оператором SaveSetting) значения:
Теперь расмотрим подробнее, что Вы написали в окне кода.
Синтаксис оператора GetAllSetting следующий:
MySet = GetAllSettings ( VBKeyName, Section)
- MySet - возвращаемый функцией массив
значений, он должен быть типа Variant
- GetSetting - имя самой функции;
- VBKeyName - строковое значение, которое
является именем внутреннего подраздела VB and VBA Program
Setting. Мы используем свойство объекта App.Title, т.к.
хотим прочесть информацию из созданного нашей программой раздела ;
- Section - строковое значение,
которое является именем внутреннего подраздела VBKeyName. В
нашем случае он носит имя PortSettings;
Остальные
операторы помогают обработать массив значений и получить информацию
в удобном виде.
Удаление раздела параметров с помощью оператора
DeleteSetting
Вы уже создали целый массив параметров! А что делать если он
больше ненужен? Для удаления параметров применяется оператор
DeleteSetting. Дважды щелкните на командной кнопке
DeleteSetting и в раскрывшемся окне введите следующий код:
Запустите программу на выполнение и намите на кнопку
DeleteSetting, потом переключитесь на окно редактора
Системного Реестра и Вы увидете, что параметр Flow control
отсутствует.
***Если Вы правильно выполнили все что написано,
но ничего не увидели, не волнуйтесь. Нажмите на клавишу F5 -
Refresh.
Теперь расмотрим подробнее, что Вы написали в окне кода.
Синтаксис оператора DeleteSetting следующий:
DeleteSetting VBKeyName, Section, Key , где:
- DeleteSetting - имя самого оператора;
- VBKeyName - строковое значение, которое
является именем внутреннего подраздела VB and VBA Program
Setting. Мы используем свойство объекта App.Title, т.к.
хотим удалить информацию из созданного нашей программой
раздела ;
- Section - строковое значение,
которое является именем внутреннего подраздела VBKeyName. В
нашем случае он носит имя PortSettings;
- Key - строковое значение, которое
представляет имя параметра в подразделе PortSettings.В
подразделе может быть много параметров и по-этому, мы указываем на
желаемое - Flow control;
Если Вы захотите удалить сразу весь подраздел, а не некоторые
параметры, то для этого используйте следующий синтаксис оператора
DeleteSetting:
DeleteSetting VBKeyName, Section ;
Поместив код DeleteSetting App.Title,"PortSettings" в
Private Sub Command4_Click(), Вы удалите весь подраздел
PortSettings.
А если Вы захотите убрать вообще все Ваши установки из
Сиастемного Реестра, то воспользуйтесь следующим кодом:
***Внимание!!! Пользуйтесь оператором DeleteSetting очень
осторожно!
При перепечатке любого материала
с сайта, видимая ссылка на источник www.warayg.narod.ru
и все имена, ссылки авторов обязательны.
© 2005
|