div.main {margin-left: 20pt; margin-right: 20pt} Visual Basic и Системный Реестр Windows.
Системный Реестр (Registry) Windows это база данных для хранения
системной и пользовательской информации в Windows. Системный Реестр
состоит из двух файлов - SYSTEM.DAT, в нем содержится информация о
конкретном компьторе, и USER.DAT, содержащий пользовательские
установки и данные.
Для работы с Системным Реестром обычно применяют специальный
редактор Системного Реестра - REGEDIT.EXE, или специальные функции
Win32 API, или некоторые встроенные функции и операторы Visual
Basic.
Остановимся на последнем и рассмотрим работу с данными в
Системном Реестре с помощью Visual Basic. Для этого Вам придется
сделать следующее:
Запустите редактор Системного Реестра, он находится в каталоге
Windows - C:WindowsRegedit.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 очень
осторожно!
|