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
и в раскрывшемся окне введите
следующий код:
Private
Sub Command1_Click()
SaveSetting App.Title, "PortSettings",
"Connect using", "COM1"
End Sub
Запустите
программу на выполнение и нажмите на
кнопку 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)
значения:
Connect
using COM1
Bits per second
2400
Data bits
8
Parity
None
Stop bits
1
Flow control
None
Теперь
расмотрим подробнее, что Вы написали в
окне кода. Синтаксис оператора GetAllSetting
следующий:
MySet =
GetAllSettings ( VBKeyName, Section)
- MySet
- возвращаемый функцией массив
значений, он должен быть типа Variant
- GetSetting
- имя самой функции;
- VBKeyName
- строковое значение, которое
является именем внутреннего
подраздела VB and VBA Program Setting. Мы
используем свойство объекта App.Title,
т.к. хотим прочесть информацию из
созданного нашей программой раздела
;
- Section
- строковое значение, которое
является именем внутреннего
подраздела VBKeyName. В нашем случае
он носит имя PortSettings;
Остальные
операторы помогают обработать массив
значений и получить информацию в
удобном виде.
Удаление
раздела параметров с помощью оператора
DeleteSetting
Вы уже
создали целый массив параметров! А что
делать если он больше ненужен? Для
удаления параметров применяется
оператор DeleteSetting. Дважды щелкните
на командной кнопке DeleteSetting и в
раскрывшемся окне введите следующий
код:
Private
Sub Command4_Click()
DeleteSetting App.Title,"PortSettings",
"Flow control "
End Sub
Запустите
программу на выполнение и намите на
кнопку 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.
А если Вы
захотите убрать вообще все Ваши
установки из Сиастемного Реестра, то
воспользуйтесь следующим кодом:
Private
Sub Command4_Click()
DeleteSetting App.Title
End Sub
***Внимание!!!
Пользуйтесь оператором DeleteSetting очень
осторожно! |