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 очень осторожно!
|