- •Минобрнауки россии
- •Е.В. Грачева Системное программное обеспечение персональных эвм
- •1 Программирование в операционной среде
- •1.1 Программирование в среде однозадачной операционной системы
- •1.2 Программирование в среде ос Windows
- •1.2.1 Основные понятия
- •1.2.2 Программный интерфейс
- •1.2.2.1 Сообщения, очередь сообщений
- •1.2.2.2 Процедура окна
- •1.2.3 Использование динамических библиотек
- •1.2.3.1.Описание api-функции LoadLibrary
- •1.2.3.2 Описание функции GetProcAddress
- •1.2.3.3 Описание функции FreeLibrary
- •1.2.4 Описание некоторых api-функций
- •1.2.4.1.Функции для создания пользовательского интерфейса
- •1.2.4.1.1 Ввод данных с клавиатуры
- •1.2.4.1.2 Ввод данных с помощью "мыши"
- •1.2.4.1.3 Диалоговые окна
- •1.2.4.2 Функции для получения информации о системе
- •1.2.4.2.1 Информация об аппаратной конфигурации
- •1.2.4.2.3 Конфигурация ос
- •1.2.4.2.4 Системные параметры
- •1.2.4.2.5 Внешний вид системных элементов
- •1.2.4.3 Функции управления памятью
- •1.2.4.3.1 Основные функции управления памятью
- •1.2.4.4.Функции управления файлами
- •1.2.4.4 Функции управления некоторыми устройствами
- •Контрольные вопросы
- •35. Охарактеризовать функцию для определения конфигурации ос
- •36. Охарактеризовать функции об установке системных параметров.
- •2.Ассемблеры
- •2.1 Архитектура процессоров ia-32
- •2.1.1.Основная исполнительная среда микропроцессора с архитектурой ia32
- •2.1.2 Режимы работы и используемая модель памяти процессоров с архитектурой ia32
- •2.1.3 Архитектура ia-32 системного уровня
- •2.2.Программирование на языке ассемблера
- •2.2.1 Метки
- •2.2.2 Директивы
- •2.2.3 Формат команды
- •2.2.4 Система команд микропроцессоров с архитектурой ia32
- •2.2.4.1 Команды пересылки данных
- •Ins строка, dx
- •2.2.4.2 Арифметические операции
- •2.2.4.3 Операции сдвига
- •2.2.4.4 Битовые операции
- •2.2.4.5 Команды для организации циклов
- •1.3.1.1 Команды сравнения
- •2.2.4.6 Команды передачи управления
- •2.2.4.7 Системные команды
- •2.2.4.8 Команды математического сопроцессора
- •2.2.5 Технология программирования
- •2.3 Макроязыки
- •3.Трансляторы
- •3.1 Структура компиляторов и интерпретаторов, лексический, синтаксический и семантический анализаторы, генератор кода
- •3.1.1.Распределение памяти, виды переменных
- •3.1.2.Статическое и динамическое связывание
- •3.2 Загрузчики
- •3.2.1 Функции загрузчика
- •3.2.1 Настраивающий и динамический загрузчики
- •3.3 Подключение библиотек
- •4. Формальные языки и грамматики
- •4.1 Типы грамматик
- •4.1.1 Вывод цепочек
- •4.1.2 Конечный и магазинный автоматы, распознаватели и преобразователи, построение автомата по заданной грамматике
- •Приложения Приложение а
- •Оглавление
- •4. Формальные языки и грамматики
1.2.4.2.4 Системные параметры
С помощью функции SystemParametersInfo можно получить или установить некоторые системные параметры, такие как время включения заставки на экране монитора, время в течении которого два последовательных щелчка левой клавишей мыши будут рассматриваться как один двойной щелчок, ширину рамки окна и т.п.
Если приложение использует функцию SystemParametersInfo для установки параметров, изменения происходят незамедлительно. Кроме этого, функция SystemParametersInfo позволяет приложениям обновлять профиль пользователя. В этом случае изменения в системе будут произведены после перезагрузки
В качестве входных параметров функции SystemParametersInfo задаются 4 числа (таблица 19).
Таблица 19 - Параметры функции SystemParametersInfo
Название параметра |
Тип в С |
Тип в ассемблере |
Назначение параметра |
uiAction |
UINT |
DD |
Определяет системный параметр, который должен быть определен или установлен |
uiParam |
UINT |
DD |
Параметр, который определяет формат и использование системного параметра. Если не используется - должен быть сброшен в 0 |
pvParam |
PVOID |
DD |
Параметр, который определяет формат и использование системного параметра. Если не используется - должен быть сброшен в 0 |
fWinIni |
UINT |
DD |
Если системный параметр устанавливается - определяет когда вступить изменениям: записать ли изменения в профиль пользователя или сразу послать сообщения всем окнам верхнего уровня |
Системный параметр uiAction определяет, какой параметр ОС будет изменяться, перечень этих параметров изменяется от одной ОС к другой. Значения кодов этих параметров указаны в заголовочном файле WinUser.h (префикс системных параметров - SPI).
1.2.4.2.5 Внешний вид системных элементов
В данном разделе рассматриваются размеры различных графических элементов, отображаемых на экране монитора: ширину границы окна, высоту иконок и т.п. Кроме этого, с помощью функции GetSystemMetrics можно определить какая мышь установлена, поддерживаются ли двухбайтовые символы, отладочная версия установленной ОС.
В качестве входного параметра функции GetSystemMetrics задается код параметра (целое беззнаковое число, размером 4 байта), значение которого определяется.
Если функция успешно выполнилась, то результат ее выполнения находится в регистре EAX и содержит в себе значение параметра.
Например, для определения высоты одиночной строки меню, используется параметр SM_CYMENU (код параметра 15). Значит, перед вызовом функции GetSystemMetrics сначала надо в стек записать код параметра (число 15), и лишь затем вызвать функцию GetSystemMetrics. Число, появившееся в регистре EAX, соответствует числу строк пикселей, формирующих меню программы.
Используя функции GetSysColor и SetSysColors можно определить (GetSysColor) или установить (SetSysColors) цвет таких элементов окна как меню, полосы прокрутки, кнопки и т.п.
Для определения цвета какого-либо элемента окна необходимо перед вызовом функции GetSysColor передать в стек код этого элемента. В результате выполнения функции, в регистре EAX будут находиться 3 байта, определяющие R, G и B составляющие цвета элемента (старший байт EAX будет равен 0).
При задании цвета элемента окна с помощью функции SetSysColors необходимо задать: указатель на массив элементов, цвет которых должен быть изменен; число элементов массива; код цвета, который должен быть присвоен каждому из перечисленных в массиве элементов окна. Массив элементов должен состоять из кодов элементов окна.
