Visual Basic і Системний Реєстр Windows. h2>
Системний
Реєстр (Registry) Windows це база даних для зберігання системної і
користувача інформації в Windows. Системний Реєстр складається з двох файлів
- SYSTEM.DAT, в ньому міститься інформація про конкретний компьторе, і USER.DAT,
що містить користувацькі установки і дані. p>
Для
роботи з Системним Реєстром зазвичай застосовують спеціальний редактор Системного
Реєстру - REGEDIT.EXE, або спеціальні функції Win32 API, або деякі
вбудовані функції та оператори Visual Basic. p>
Зупинимося
на останньому і розглянемо роботу з даними до реєстру за допомогою Visual
Basic. Для цього Вам доведеться зробити наступне: p>
Запустіть
редактор Системного Реєстру, він знаходиться в каталозі Windows --
C: WindowsRegedit.exe. При запуску редактора у вікні з'являться шість
ключів-папок (ці ключі якраз і представляють вміст файлів SYSTEM.DAT і
USER.DAT). Виберіть ключ HKEY_CURRENT_USER (цей ключ входить до складу файла
USER.DAT) і клацніть на плюсик "+". У розкрився списку виберіть
з'єднання - Software - і розкрийте його. Знайдіть у знову списку, що відкрився папку
- VB and VBA Program Setting - це і є розділ Системного Реєстру куди з
допомогою вбудованих операторів та функцій Visual Basic Ви можете записувати і
зчитувати необхідну Вам інформацію. p>
Запустіть
Visual Basic і відкрийте новий проект. Помістіть на форму чотири командні
кнопки і у властивості Caption ", кожній з них введіть відповідно:
SaveSetting, GetSetting, GetAllSettings, DeleteSetting. Запам'ятайте проект під
ім'ям, скажімо, MYREG. p>
А
тепер приступимо до роботи. p>
Запис
значень за допомогою оператора SaveSetting p>
Двічі
клацніть на командній кнопці SaveSetting і в розкрився вікні введіть
наступний код: p>
Private Sub Command1_Click () p>
SaveSetting App.Title,
"PortSettings", "Connect using", "COM1" p>
End
Sub p>
Запустіть
програму на виконання та натисніть SaveSetting, потім перейдіть на
вікно редактора Системного Реєстру. Відкрийте папку VB and VBA Program Setting і
там Ви побачите новостворену папку MYREG, а в ній підрозділ з ім'ям
PortSettings. Відкривши його, у лівому вікні редактора, Ви прочитаєте запис яку
тільки що створили - Connect using "COM1". p>
*** Якщо
Ви правильно виконали все, що написано, але нічого не побачили, не хвилюйтеся.
Натисніть клавішу F5 (Refresh) і перед вами з'явиться шукана запис. p>
Тепер
розглянемо по-детальніше, що Ви написали у вікні коду. Синтаксис оператора SaveSetting наступний: p>
SaveSetting VBKeyName, Section, Key,
Setting, де: p>
SaveSetting
- Ім'я самого оператора; p>
VBKeyName
- Строкове значення, яке є ім'ям внутрішнього підрозділу VB and VBA
Program Setting. У нашому випадку онo буде носити ім'я нашої програми - MYREG,
тому що ми використовували властивість об'єкта App.Title; p>
Section
- Строкове значення, яке є ім'ям внутрішнього підрозділу VBKeyName.
У нашому випадку воно носить ім'я PortSettings; p>
Key
- Строкове значення, яке представляє ім'я параметра в створеному підрозділі
PortSettings.В підрозділі може бути багато параметрів. p>
Setting
- Строкове значення, яке Ви хочете привласнити даним параметром. У нашому
випадку параметру Connect using присвоюється значення COM1; p>
Читання
значень за допомогою функції GetSetting () p>
*** При
виконання нижченаведених дій оголосіть у роздiлi Declaration форми
змінні CrtMsg As String, MySet As Variant p>
Щоб
отримати значення для певного запису, потрібно використовувати функцію
GetSetting (). Двічі клацніть на командній кнопці GetSetting і в розкрився
вікні введіть наступний код: p>
Private Sub Command2_Click () p>
MySet = GetSetting (App.Title,
"PortSettings", "Connect using", CrtMsg) p>
Debug.Print
MySet p>
End
Sub p>
Запустіть
програму на виконання і наміте на кнопку GetSetting. У вікні Immediate Ви
побачите введене раніше (оператором SaveSetting) значення - COM1. p>
Тепер
розглянемо докладніше, що Ви написали у вікні коду. Синтаксис оператора GetSetting наступний: p>
MySet = GetSetting (VBKeyName,
Section, Key [, Default]) p>
MySet
- Рядок для зберігання що повертається функцією GetSetting значення; p>
GetSetting
- Ім'я самої функції; p>
VBKeyName
- Строкове значення, яке є ім'ям внутрішнього підрозділу VB and VBA
Program Setting. Ми використовуємо властивість об'єкта App.Title, тому що хочемо прочитати
інформацію з створеного нашою програмою розділу; p>
Section
- Строкове значення, яке є ім'ям внутрішнього підрозділу VBKeyName.
У нашому випадку він носить ім'я PortSettings; p>
Key
- Строкове значення, яке представляє ім'я параметра в створеному підрозділі
PortSettings.В підрозділі може бути багато параметрів і по-цьому, ми вказуємо
на бажане - Connect using; p>
Default
- Необов'язковий аргумент, який представляє строкове значення, яке буде
повернено функцією у разі помилки (якщо такого параметра немає). Функція
повертає строкове значення, присвоєне аргументу Default. Приміром CrtMsg
= "Такого параметра не існує .". p>
Читання
значень за допомогою функції GetAllSettings () p>
*** Попередньо
додайте наступний код до наявного коду командної кнопки p>
SaveSetting: p>
SaveSetting App.Title,
"PortSettings", "Data bits", "8" p>
SaveSetting App.Title,
"PortSettings", "Parity", "None" p>
SaveSetting App.Title,
"PortSettings", "Stop bits", "1" p>
SaveSetting App.Title,
"PortSettings", "Flow control", "None" p>
Проведіть
операцію запису даних до реєстру. p>
Для
отримання з реєстру масиву, що містить всі значення параметрів з
певного підрозділу (наприклад, PortSettings) застосовується функція
GetAllSettings (). Для цього двічі клацніть на командній кнопці GetAllSettings
і в розкрився вікні введіть наступний код: p>
Private Sub Command3_Click () p>
Dim intSettings As Integer p>
MySet = GetAllSettings (App.Title,
"PortSettings") p>
For intSettings = LBound (MySet, 1) To
UBound (MySet, 1) p>
Debug.Print MySet (intSettings, 0),
MySet (intSettings, 1) p>
Next intSettings p>
End
Sub p>
Запустіть
програму на виконання та натисніть GetAllSettings. У вікні Immediate Ви
побачите введені раніше (оператором SaveSetting) значення: p>
Connect using COM1 p>
Bits per second 2400 p>
Data bits 8 p>
Parity None p>
Stop bits 1 p>
Flow
control None p>
Тепер
розглянемо докладніше, що Ви написали у вікні коду. Синтаксис оператора GetAllSetting наступний: p>
MySet = GetAllSettings (VBKeyName,
Section) p>
MySet
- Повертається функцією масив значень, він повинен бути типу Variant p>
GetSetting
- Ім'я самої функції; p>
VBKeyName
- Строкове значення, яке є ім'ям внутрішнього підрозділу VB and VBA
Program Setting. Ми використовуємо властивість об'єкта App.Title, тому що хочемо прочитати
інформацію з створеного нашою програмою розділу; p>
Section
- Строкове значення, яке є ім'ям внутрішнього підрозділу VBKeyName.
У нашому випадку він носить ім'я PortSettings; p>
Решта
оператори допомагають обробити масив значень і отримати інформацію в зручному
вигляді. p>
Видалення
розділу параметрів за допомогою оператора DeleteSetting p>
Ви
вже створили цілий масив параметрів! А що робити якщо він більше непотрібний? Для
видалення параметрів застосовується оператор DeleteSetting. Двічі клацніть на
командній кнопці DeleteSetting і в розкрився вікні введіть наступний код: p>
Private Sub Command4_Click () p>
DeleteSetting
App.Title, "PortSettings", "Flow control" p>
End
Sub p>
Запустіть
програму на виконання і наміте на кнопку DeleteSetting, потім перейдіть
на вікно редактора Системного Реєстру і Ви побачите, що параметр Flow control
відсутня. p>
*** p>
Якщо
Ви правильно виконали все, що написано, але нічого не побачили, не хвилюйтеся.
Натисніть на клавішу F5 - Refresh. p>
Тепер
розглянемо докладніше, що Ви написали у вікні коду. Синтаксис оператора DeleteSetting наступний: p>
DeleteSetting VBKeyName, Section,
Key, де: p>
DeleteSetting
- Ім'я самого оператора; p>
VBKeyName
- Строкове значення, яке є ім'ям внутрішнього підрозділу VB and VBA
Program Setting. Ми використовуємо властивість об'єкта App.Title, тому що хочемо видалити
інформацію з створеного нашою програмою розділу; p>
Section
- Строкове значення, яке є ім'ям внутрішнього підрозділу VBKeyName.
У нашому випадку він носить ім'я PortSettings; p>
Key
- Строкове значення, яке представляє ім'я параметра в підрозділі
PortSettings.В підрозділі може бути багато параметрів і по-цьому, ми вказуємо
на бажане - Flow control; p>
Якщо
Ви захочете вилучити відразу весь підрозділ, а не деякі параметри, то для
цього використовуйте такий синтаксис оператора DeleteSetting: p>
DeleteSetting VBKeyName, Section; p>
Помістивши
код DeleteSetting App.Title, "PortSettings" в Private Sub
Command4_Click (), Ви видалите весь підрозділ PortSettings. p>
А
якщо Ви захочете прибрати взагалі всі Ваші установки з Сіастемного Реєстру, то
скористайтеся наступним кодом: p>
Private
Sub Command4_Click () p>
DeleteSetting App.Title p>
End Sub p>
Список b> b> літератури b> p>
Для
підготовки даної роботи були використані матеріали з сайту http://visualprogs.narod.ru/
p>