Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Metodychka-lab_OS.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
1.35 Mб
Скачать

1.7 Виявлення змін в гілці реєстру

В програмному інтерфейсі WinAPI є зручний механізм для виявлення того чи були зміни в певній гілці реєстру. Цей механізм може працювати в двох режимах: синхронному і асинхронному. Режим задається через формат виклику API функції RegNotifyChangeKeyValue.

Синхронний виклик значно простіший за асинхронний: функція не завершить свого виконання поки не відбудеться зміна. Синхронний виклик здійснюється так:

invoke RegNotifyChangeKeyValue, hkey, bs, \

REG_NOTIFY_CHANGE_LAST_SET, 0, FALSE

де hkey – дескриптор ключа (А14), відкритий за допомогою функції RegOpenKeyEx (A17) з режимом доступу (A17.4), який дорівнює KEY_NOTIFY.

bs – ознака включення дерева всіх підключів при очікуванні зміни. Може приймати значення TRUE (включати) або FALSE (не включати).

REG_NOTIFY_CHANGE_LAST_SET – очікування змін в значеннях ключа. Змінами вважаються додавання або знищення значень або зміна існуючого значення. Є ще інші режими очікування з якими можна ознайомитися в документації (файл допомоги WIN32.HLP, який знаходиться в мережі ІКІТ за адресою \\nt-backup\Predmetu\SPZ\HELP_WIN32APIENG\).

Останні два параметри 0, FALSE необхідні для синхронного виклику.

Асинхронний виклик здійснюється з такими ж значеннями як для синхронного виклику крім двох останніх значень (0 і FALSE), які треба замінити на hEvent (дескриптор об’єкту події, створений функцією CreateEvent) і TRUE. Потім асинхронний виклик вимагає виклику очікуючої функції (див. лаб. 5).

1.8 Робота з налаштуваннями операційної системи через реєстр

Створення програм для зміни або відображення налаштувань ОС не вимагає безпосереднього відкриття ключів реєстру і редагування їх значень. Для цього використовуються функції SystemParametersInfo і SetSysColors.

Опишемо формат виклику функції SystemParametersInfo:

invoke SystemParametersInfo, uiAction, uiParam, addr pvParam, fWinIni

uiAction – Визначає один з можливих параметрів операційної системи, який треба змінити або отримати. Перелічимо декілька з доступних параметрів (для повного списку параметрів див. файл допомоги WIN32.HLP):

Значення

Опис

SPI_GETACCESSTIMEOUT

Для отримання інформації про період тайм-ауту, який пов'язаний із спеціальними можливостями (accessibility features). Аргумент pvParam повинен вказувати на об'єкт структури ACCESSTIMEOUT, в якому зберігатиметься ця інформація. Розмір структури в байтах sizeof(ACCESSTIMEOUT) потрібно встановити в полі структури cbSize та в аргументі uiParam (див. оголошення ф-ції).

SPI_GETACTIVEWINDOWTRACKING

Windows NT 5.0 і пізніші, Windows 98: Визначає чи включена функція активації вікна на якому стоїть стрілочка миші. Аргумент pvParam має вказувати на змінну, яка отримуватиме значення TRUE, якщо включена або FALSE, якщо виключена.

SPI_SETDESKWALLPAPER

Встановлює заставку робочого стола. Аргумент pvParam повинен вказувати на стрічку завершену нулем, яка містить шлях і назву графічного файлу заставки.

uiParam, pvParam – ці аргументи залежать від вибраного параметру операційної системи і режиму роботи (uiAction).

fWinIni – аргумент який визначає чи зберігатиметься зміна параметрів операційної системи після завершення сеансу роботи користувача. Може приймати два значення: SPIF_UPDATEINIFILE (зберігати) або SPIF_SENDCHANGE (не зберігати).

Функція SetSysColors призначена для зміни кольорів оформлення ОС Windows. Опишемо формат виклику функції SetSysColors:

invoke SetSysColors, n, addr elem, addr colors

n Кількість елементів в масивах на які вказують два наступних аргументи.

addr elem Вказівник на масив елементів оформлення Windows (тип елементів dd або DWORD); за переліком доступних елементів оформлення див. Help по функціях API – файл WIN32.HLP.

addr colors Вказівник на масив кольорів в форматі 24 розрядного ЧЗС (24 bit RGB) – тип елементів масиву dd або DWORD.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]