Большой архив статей, книг, документации по программированию, вебдизайну, компьютерной графике, сетям, операционным системам и многому другому
 
<Добавить в Избранное>    <Сделать стартовой>    <Реклама на сайте>    <Контакты>
  Главная Документация Программы Обои   Экспорт RSS E-Books
 
 

   Программирование -> Basic -> Visual Basic и Системный Реестр Windows




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

 

 
Интересное в сети
 
10 новых программ
CodeLobster PHP Edition 3.7.2
WinToFlash 0.7.0008
Free Video to Flash Converter 4.7.24
Total Commander v7.55
aTunes 2.0.1
Process Explorer v12.04
Backup42 v3.0
Predator 2.0.1
FastStone Image Viewer 4.1
Process Lasso 3.70.4
FastStone Image Viewer 4.0
Xion Audio Player 1.0.125
Notepad GNU v.2.2.8.7.7
K-Lite Codec Pack 5.3.0 Full


Наши сервисы
Рассылка новостей. Подпишитесь на рассылку сейчас и вы всегда будете в курсе последних событий в мире информационных технологий.
Новостные информеры. Поставьте наши информеры к себе и у вас на сайте появится дополнительный постоянно обновляемый раздел.
Добавление статей. Если вы являетесь автором статьи или обзора на тему ИТ присылайте материал нам, мы с удовольствием опубликуем его у себя на сайте.
Реклама на сайте. Размещая рекламу у нас, вы получите новых посетителей, которые могут стать вашими клиентами.
 
Это интересно
 

Copyright © CompDoc.Ru
При цитировании и перепечатке ссылка на www.compdoc.ru обязательна. Карта сайта.