Чтение онлайн

на главную - закладки

Жанры

Шрифт:

Рис. 7.5. Результат работы таймера

В завершение вновь обратимся к функции timeSetEvent: кратко перечислим предоставляемые ею возможности, которыми мы не воспользовались в приведенном выше примере.

Как вы могли заметить, последний параметр функции timeSetEvent является битовой маской. Флаги этой маски задают два аспекта поведения таймера: количество срабатываний таймера и тип действия, которое требуется выполнять при срабатывании таймера.

Количество срабатываний таймера определяется двумя

значениями.

• TIME_ONESHOT – таймер срабатывает один раз. Для таких таймеров вызывать timeKillEvent после срабатывания не нужно.

• TIME_PERIODIC – таймер срабатывает периодически через заданные промежутки времени.

Тип действия, выполняемого таймером, задается при помощи следующих констант:

• TIME_CALLBACK_FUNCTION – при срабатывании таймера вызывается процедура, адрес которой был передан третьим параметром;

• TIME_CALLBACK_EVENT_SET – вызывает SetEvent для объекта синхронизации «событие», дескриптор которого передан третьим параметром;

• TIME_CALLBACK_EVENT_PULSE – вызывается PulseEvent для объекта синхронизации «событие», дескриптор которого передан третьим параметром.

К сожалению, использование объектов синхронизации хоть и является темой для интересного разговора, но все же выходит за рамки этой главы. Потому, упомянув о соответствующих возможностях таймера, больше не будем распространяться на эту тему.

7.3. Реестр

Далее будет рассмотрено несколько примеров использования в программах на Delphi одного из важнейших хранилищ информации Windows – системного реестра.

Краткие сведения о реестре Windows

Что же представляет собой системный реестр и для чего он предназначен? Реестр состоит из нескольких файлов с довольно сложной организацией записей, формирующих иерархическую структуру (родитель—потомки), а точнее, несколько веток структуры. Благодаря наличию специальных функций мы можем работать с реестром именно как с иерархической структурой, а не как с набором записей в файле.

Реестр Windows является отличным примером организации централизованного хранения данных, в основном, настроек программ. Реестр является хорошей альтернативой большим INI-файлам, доставшимся в наследство от 16-разрядных версий Windows, главным образом из-за возможности лучше структурировать информацию (ведь секции разделов в реестре могут быть много раз вложенными). В реестре хранятся и данные, которые могут пригодиться сразу многим программам: например, расположения СОМ-серверов, пути приложений, ассоциированных с различными типами файлов.

В реестре могут быть объекты двух типов: разделы (во многом аналогичны папкам файловой системы) и параметры (имеют имя, тип и значение).

Данные реестра сгруппированы в несколько ветвей (рис. 7.6). Для запуска показанной на рис. 7.6 программы Редактор реестра достаточно набрать в командной строке Regedit либо отыскать файл Regedit. ехе в каталоге Windows.

Информация, помещаемая в различных разделах реестра, группируется по следующим признакам.

• HKEY_CURRENT_USER – в этом разделе хранится информация, используемая для текущего пользователя, осуществившего вход в систему. Этой информацией могут быть, например, значения переменных окружения, фон Рабочего стола, вид меню Пуск.

• HKEY_USERS – содержит настройки системы для различных пользователей, а также настройки, используемые по умолчанию для нового

пользователя.

• HKEY_LOCAL_MACHINE – самая большая и главная ветвь реестра, содержащая параметры Windows, приложений, оборудования, ассоциации расширений файлов, расположение СОМ-серверов и еще много чего полезного.

• HKEY_CURRENT_CONFIG – в этом разделе хранятся значения параметров Windows, отличающихся от стандартных. Он является псевдонимом для ветви HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Hardware ProfilesX Current.

• HKEY_CLASSES_ROOT – в системах Windows 95/98/NT 4.0 и более ранних этот раздел является псевдонимом для ветви HKEY_LOCAL_MACHINE\SOFTWARE\Classes. В Windows 2000/ХР содержимое этого раздела составляется из содержимого разделов HKEY_LOCAL_MACHINE\SOFTWARE\Classes и HKEY_CURRENT_USER\Software\Classes.

Доступ к разделам реестра происходит по дескрипторам. Дескриптор раздела можно получить при его создании или открытии, указав дескриптор одной из рассмотренных выше корневых ветвей, а также путь требуемого раздела. Для хранения дескрипторов корневых ветвей реестра определены одноименные константы.

Средства работы с реестром

Для работы с реестром предусмотрена целая группа API-функций. Однако зачем изобретать велосипед, испытывая на себе «удобство» работы с этими функциями? Ведь Borland предоставила нам в распоряжение замечательный по своей простоте класс TRegistry. Использованию этого класса как раз и посвящено несколько следующих абзацев.

Итак, класс TRegistry находится в модуле Registry. Если кому-то все же станет интересно использование API для работы с реестром, то можете заглянуть в этот модуль и там посмотреть, как реализованы методы класса TRegistry.

...

Примечание

Помимо TRegistry, в модуле Registry можно найти такие классы, KaKTReglniFile и TRegistrylniFile, позволяющие работать с реестром, как будто бы это INI-файл. В ряде случаев использование этих классов вместо TRegistry позволит сократить размер программы, да и значительно ее упростить.

В табл. 7.1 приведены свойства класса TRegistry.

Таблица 7.1. Свойства класса TRegistry

Список констант, которые могут объединяться операцией or для формирования значения свойства Access:

• KEY_QUERY_VALUE – получение значений параметров раздела;

• KEY_ENUMERATE_SUB_KEYS – возможность составления списка подразделов;

• KEY_SET_VALUE – создания параметров в разделе, задание их значений;

• KEY_CREATE_SUB_KEY – создание подразделов;

• KEY_CREATE_LINK – создание символических ссылок (здесь не рассматривается);

• KEY_NOTIFY – право на уведомление об изменении раздела и его подразделов (здесь не рассматривается);

• KEY_READ – комбинация значений KEY_QUERY_VALUE, KEY_ENUMERATE_ SUB_KEYS И KEY_NOTIFY;

• KEY_WRITE – комбинация3Ha4eHtriiKEY_SET_VALUE HKEY_CREATE_SUB_KEY;

• KEY_ALL_ACCESS – комбинация значений KEY_READ, KEY_WRITEH KEY_ CREATEJLINK.

Приводить список всех методов класса TRegistry в книге нерационально, да и незачем. Благо, названия методов говорят сами за себя, к тому же Delphi поставляется с неплохой справочной системой. Здесь же мы остановимся на рассмотрении некоторых особенностей работы с методами класса TRegistry.

Поделиться:
Популярные книги

Вкус ледяного поцелуя

Полякова Татьяна Викторовна
2. Ольга Рязанцева
Детективы:
криминальные детективы
9.08
рейтинг книги
Вкус ледяного поцелуя

Проблема майора Багирова

Майер Кристина
1. Спецназ
Любовные романы:
современные любовные романы
6.60
рейтинг книги
Проблема майора Багирова

Прометей: владыка моря

Рави Ивар
5. Прометей
Фантастика:
фэнтези
5.97
рейтинг книги
Прометей: владыка моря

Попаданка в академии драконов 4

Свадьбина Любовь
4. Попаданка в академии драконов
Любовные романы:
любовно-фантастические романы
7.47
рейтинг книги
Попаданка в академии драконов 4

(Не)зачёт, Дарья Сергеевна!

Рам Янка
8. Самбисты
Любовные романы:
современные любовные романы
5.00
рейтинг книги
(Не)зачёт, Дарья Сергеевна!

Запасная дочь

Зика Натаэль
Фантастика:
фэнтези
6.40
рейтинг книги
Запасная дочь

Дракон с подарком

Суббота Светлана
3. Королевская академия Драко
Любовные романы:
любовно-фантастические романы
6.62
рейтинг книги
Дракон с подарком

Отвергнутая невеста генерала драконов

Лунёва Мария
5. Генералы драконов
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Отвергнутая невеста генерала драконов

Случайная жена для лорда Дракона

Волконская Оксана
Фантастика:
юмористическая фантастика
попаданцы
5.00
рейтинг книги
Случайная жена для лорда Дракона

Тройняшки не по плану. Идеальный генофонд

Лесневская Вероника
Роковые подмены
Любовные романы:
современные любовные романы
6.80
рейтинг книги
Тройняшки не по плану. Идеальный генофонд

Идеальный мир для Лекаря 28

Сапфир Олег
28. Лекарь
Фантастика:
юмористическое фэнтези
аниме
фэнтези
5.00
рейтинг книги
Идеальный мир для Лекаря 28

Лейтенант космического флота

Борчанинов Геннадий
1. Звезды на погонах
Фантастика:
боевая фантастика
космическая фантастика
космоопера
рпг
фэнтези
фантастика: прочее
5.00
рейтинг книги
Лейтенант космического флота

Гарем на шагоходе. Том 5

Гремлинов Гриша
5. Волк и его волчицы
Фантастика:
боевая фантастика
фэнтези
5.00
рейтинг книги
Гарем на шагоходе. Том 5

Матабар III

Клеванский Кирилл Сергеевич
3. Матабар
Фантастика:
фэнтези
5.00
рейтинг книги
Матабар III