Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабы по МП / API / Methods.doc
Скачиваний:
42
Добавлен:
11.05.2015
Размер:
233.47 Кб
Скачать

1.3 Получение и установка параметров системы

Очень часто в приложениях надо иметь возможность программно определять и устанавливать различные системные параметры. Для получения и установки многих системных параметров профиля пользователя очень удобна функция SystemParametrsInfo. Она определена в файлеWinuser.hследующим образом;

BOOLSystemParametrsInfo(INOINTuiAction,

INUINTuiParam,

IN OUT PVOID pvParam,

INUINTfWinIni);

Параметр uiActionопределяет выполняемую функцией операцию и в зависимости от этой операции меняется смысл параметровuiParamиpwParam. Ниже приведено только несколько возможных значений параметраuiAction, имеющих прямое отношение к задачам, рассматриваемым в данной книге. Полное описание всех значений см. в гл. 8. Там вы найдете немало интересных вариантов, которые, возможно, помогут организовать взаимодействие ваших приложений сWindows.

SPI_GETDEFAULTINPUTLANG

Определить раскладку клавиатуры для языка по умолчанию. Параметр pvParamуказывает, на 32-битную переменную, в которую возвращается дескриптор раскладки клавиатуры по умолчанию. ПараметрuiParamне используется.

SPI_GETICONTITLELOGFONT

Получить информацию о текущем шрифте заголовков пиктограмм. Параметр pvParamуказывает на структуру типаLOGFONT(см. ее описание в разд. 1.14), а параметр шРагат определяет размер структуры —sizeof(LOGFONT)). Все поля структуры заполняются. функцией. Основные из них следующие (см. подробнее в справке С++Builder).В полеlfHeightзаносится величина, определяющая вертикальный: размер шрифта: 0 — используется размер по умолчанию, ненулевое значение — высота в логических единицах. В полеlfWeightпередается толщина линий от 0 до 1.000 (нормальная — 400, жирный — 700). ПолеlfFaceNameсодержит имя шрифта. ПолеlfOrientationуказывает угол наклона текста в десятках градусов.

SPI_GETSCREENSAVERACTIVE

Определить, включен ли режим автоматического запуска хранителя экрана. Параметр pvParamдолжен указывать на булеву переменную, в которую возвращаетсяtrue, если режим включен, иfalseв противном случае. ПараметрuiParamне используется.

SPI_GETSCREENSAVERTIMEOUT

Определить задержку в секундах автоматического запуска хранителя экрана. Параметр pvParanдолжен указывать на целую переменную, в которую возвращается затребованная величина. ПараметрuiParamне используется.

SPI_GETWHEELSCROLLLINES

Только для WindowsNT: определить заданное число строк, прокручиваемых при вращении колесика мыши. ПараметрpcParamдолжен указывать на переменную типаUINT, в которую возвращается затребованная величина. Значение по умолчанию — 3. ПараметрuiParamне используется.

SPI_GETWORKAREA

Определить размер рабочей области экрана, не занятой полосой задач. Параметр pvParamдолжен указывать на структуру типаRECT, в которую функция возвращает размер области.

SPI_SETBEEP

Включить или выключить звуковую индикацию ошибок. Параметр uiParamнадо установить в 0, если надо выключить индикацию, и установить в 1, если надо включить ее. ПараметрpvParamне используется и должен быть равенNULL.

SPI_SETDEFAULTINPUTLANG

Установить язык по умолчанию. Параметр pvParamдолжен указывать на 32-битную переменную, в которой указан дескриптор раскладки клавиатуры по умолчанию. ПараметрuiParamне используется.

SPI_SETDESKWALLPAPER

Установить обои Рабочего стола. Параметр pvParamдолжен указывать строку с полным именем графического файла обоев. ПараметрuiParamне используется.

SPI_SETICONTITLELOGFONT

Задать характеристики шрифта заголовков пиктограмм. Параметр pvParamуказывает на структуру типаLOGFONT(см. ее описание в разд. 1.14), а параметрuiParamопределяет размер структуры —sizeof(LOGFONT). Основные поля структуры, которые надо заполнить, следующие (см. подробнее в справке С++Builder). В полеlfHeightзаносится величина, определяющая вертикальный размер шрифта: 0 — используется размер по умолчанию, ненулевое значение — высота в логических единицах. В полеlfWeightпередается толщина линии от 0 до 1000 (нормальная — 400, жирная — 700). Поле lfFaceNameсодержит имя шрифта. ПолеlfOrientationуказывает угол наклона текста, в десятках градусов.

SPI_SETLANGTOGGLE

Задать горячие клавиши, переключающие используемый язык. Параметры uiParamиpvParamне используются. Сочетания горячих клавиш читаются из реестра, где они предварительно должны быть записаны. Сочетания хранятся в ключе HKEY_CURRENT_USER \Keyboard Layout.\Toggle. Возможные значения параметров:

1 — Alt+Shift, 2 — Ctrl+Shift, 3 — не заданы;

SPI_SETMOUSEBUTTONSWAP

Изменить или восстановить назначение кнопок мышя. Если в параметр uiParamзаписать 1, функции левой и правой кнопок мыши поменяются: правая станет основной, а левая вспомогательной, вызывающей контекстные меню и т.п. Если в параметрuiParamзапасать 0, то восстановятся исходные функций кнопок. ПараметрpvParamне используется и двивнйен быть равенNULL.

SPI_SETPOWEROFFACTIVE

Только для Windiws95: включить или выключить режим автоматического отключения пжгания при работе хранителя экрана. ЗаданиеuiParam= 1 соответствует включению режима, а значение 0 — отключению. ПараметрpvParamне используется и должен быть равенNULL.

SPI_SETPOWEROFFTOMEOUT

Только для Windiws95: задать задержку автоматического выключения питания при работе хранителя экрана. Задержка задается параметромuiParam. ПараметрpvParamне используется и должен быть равенNULL.

SPI_SETSCREENSAVERACTIVE

Включить или выключить режим автоматического запуска хранителя экрана. Задается параметром uiParam: 1 — включить, 0— выключить. ПараметрpvParamне используется и должен быть равенNULL.

SPI_SETSCREENSAVERTIMEOUT

Установить задержку в секундах автоматического запуска хранителя экрана. Задается параметром- uiParam. ПараметрpvParamне используется и должен быть равенNULL.

SPI_SETWHELLSCROLLLINES

Только для WindowsNT: задать число строк, прокручиваеммых при вращении колесика мыши. Это число задается параметромuiPara. Если задать значение 0, прокрутки не будет, значение по умолчанию – 3. Если задать число больше, чем число видимых строк, или задать равнымWHEEL_PAGESCROLL(соответствуетUINT_MAX), то вращение колесика интерпретируется как щелчок на полосе прокрутки или под движком.

Выше приведен сокращенный список возможных значений параметра uiAction. Смысл параметровuiParampvParam, как видно из таблицы, определяется параметромuiAction. Если параметрuiParamне используется, он должен быть равен 0. Если параметрpvParamне используется он должен быть равенNULL.

Параметр fWinIniпри режимах установки системных параметров определяет, должен ли обновиться профиль пользователя и следует ли послать всем окнам верхнего уровня сообщениеWM_SETTINGCHANGE, извещающее об изменении системных параметров. ПараметрfWinIniможет быть равен 0, или может равняться одному из следующих значений:

SPIF_UPDATEINIFILE

Записать новые параметры в профиль пользователя.

SPIF_SENDHANGE

Разослать сообщение WM_SETTINGCHANGEпосле обновления параметров, не записывая параметры в профиль пользователя.

SPIF_SENDWININICHANGE

Идентично SPIF_SENDHANGE

При значениях SPIF_SETCHANGEиSPIF_SENDWININICHANGEновые параметры будут действовать только во время текущего сеанса работы данного пользователя. При перезагрузкеWindowsили при смене пользователя восстановятся прежние значения параметров.

Функция SystemParametrsInfoвозвращает ненулевое значение в случае успежного завершения. Рассмотрим несколько примеров использования функцииSystemParametrsInfo.

Оператор

#include<JPEG.hpp>//используется только в том случае,

//когда используется формат jpeg

SystemParametrsInfo(SPI_SETDESKWALLPAPER, 0,

OpenDialog1->FileName.c_str(),SPIF_SENDHANGE);

Устанавливает на рабочем столе обои из графического файла, выбранного бользователем в диалоге OpenPictureDialog1 и обновляет Рабочий стол, так что новые обои немедленно появятся на нем. Но они не будут зафиксированы в реестре, поэтому после перезагрузкиWindowsна экране опять появятся прежние обои. А если в приведенном операторк вы замените значение последнего оператора наSPIF_UPDATEINIFILE, то новые обои будут зафиксированны в реестре, и вы увидите их снова в следующем сеансе работы.

Следует отметить, что если вы хотите в приведенном выше операторе работать с файлами форматa .jpg, то для этого необходимо подключить файл JPEG.hpp.

Следующие операторы занесут в переменную Lзначениеtrue, если режим автоматического запуска хранителя экрана включени, и значениеfalse, если он выключен:

bool L;

SystemParametrsInfo(SPI_GETSCREENSAVERACTIVE, 0, &L, 0);

А оператор

SystemParametrsInfo(SPI_SETSCREENSAVERACTIVE, 1, NULL, SPIF_SENDHANGE);

включит режим автоматического запуска хранителя экрана.

Следующие операторы определяют характер упорядочиваэйия свернутых окон:

MINIMIZEDMETRICS MM;

MM.cbSize = sizeof(MINIMIZEDMETRICS);

SystemParametrsInfo(SPI_GET MINIMIZEDMETRICS, MM.cbSize, &MM, 0);

MM.iArrange = ARW_BOTTOMLEFT || ARW_UP;

SystemParametrsInfo(SPI_SETMINIMISEDMETRICS, MM.cbSize, &MM,

SPIF_UPDATEINIFILE);

Первый вызов SystemParametrsInfoзаносит в структуруMMтекущую метрику свернутых окон. Следующий оператор изменяет только одно поле, занося в него флаги, устанавливающие упорядочивание свернутых окон вверх от левого нижнего угла. Последний оператор фиксирует эти изменения в профиле пользователя. Теперь подобный характер упорядочивания будет действовать во всех приложениях. Можете это проверить, например, при работе сWord.

Соседние файлы в папке API