Главная страница
Навигация по странице:

  • Версия операционной системы

  • Характеристики системных иконок

  • Функции для работы со временем

  • Лаб_раб_Функции WIN API получения системной информации. Функции получения системной информации


    Скачать 49.92 Kb.
    НазваниеФункции получения системной информации
    Дата22.12.2021
    Размер49.92 Kb.
    Формат файлаdocx
    Имя файлаЛаб_раб_Функции WIN API получения системной информации.docx
    ТипЛабораторная работа
    #313192

    Лабораторная работа
    Тема «Функции получения системной информации»
    Цель работы: Получение практических навыков по программированию в Win32 API

    с использованием аппаратных и системных функций.
    В настоящее время Microsoft предлагает две 32-разрядные операционные си­стемы – Windows 9x (Windows 95, 98, ME) и Windows NT (Windows NT, 2000, XP). Интерфейс прикладного программирова­ния (Application Programming Interface Win32 - Win32 API) - это программный интерфейс, который используется для управления этими операционными сис­темами. Или, более конкретно, Win32 API состоит из набора функций и подпрограмм, предоставляющих программный доступ к возможностям операцион­ной системы.

    Иначе говоря, программные интерфейсы приложений представляют собой набо­ры функций (в этот обобщенный термин мы включаем и подпрограммы), которые обеспечивают сервисы данного приложения. Win32 API содержит более 3000 функции для реализации всех видов сервисов операционной системы.

    API-функции Windows входят в состав динамически подключаемых библио­тек, поэтому необходимо дать четкое определение DLL и кратко изложить основ­ные принципы их работы.

    Динамически подключаемая библиотека (Dynamic Link Library - DLL) явля­ется исполняемым файлом, который содержит несколько экспортируемых функции (exportable functions), то есть функций, к которым могут обращаться другие ис­полняемые приложения (ЕХЕ или DLL). Файлы DLL намного проще файлов ЕХЕ, например, в них нет кода, который управлял бы графическим интерфейсом или обрабатывал сообщения Windows.

    Для размещения API-функций Windows использует несколько DLL. В дей­ствительности большая часть функций Win32 API содержится в трех DLL:

    KERNEL32.DLL - содержит около 700 функций, которые предназначены для управления памятью, процессами и потоками;

    USER32.DLL - предоставляет порядка 600 функций для управления пользо­вательским интерфейсом, например, созданием окон и передачей сообщений;

    GDI.DLL - экспортирует около 400 функций для рисования графических образов, отображения текста и работы со шрифтами.

    Кроме этих библиотек Windows также содержит несколько других DLL более узкой специализации. Здесь приводятся некоторые из них:

    COMDLG32.DLL - открывает доступ почти к 20 функциям управления стан­дартными диалоговыми окнами Windows;

    LZ32.DLL - хранит примерно 12 функций архивирования и разархивирования файлов;

    ADVAPI32.DLL - экспортирует около 400 функций, связанных с защитой объектов и работой с реестром;

    WINMM.DLL - содержит около 200 функций, относящихся к мультимедиа.
    Основные Win32 API-функции получения систем­ной информации перечислены ниже:
    GetComputerName GetSystemMetrics GetWindowsDirectoty
    GetKeyboardTyре GetTempPath SetСоmрuterName
    GetSysColor GetUserName SetSysColors
    GetSystemDirectory GetVersion SystemParametersInfo
    GetSystemInfo GetVersioriEx GetUserName
    Имя компьютера

    Функция GetComputerName используется для получения текущего имени компьютера. Связанная с ней SetСomputerName используется для присвоения имени компьютеру. Объявление в Delphiзаписывается таким образом:

    MAX_COMPUTERNAME_LENGTH = 15;
    Пример небольшой функции, возвращающей имя компьютера:
    var Bufer : array [0..MAX_COMPUTERNAME_LENGTH+1] of char;

    size : cardinal;

    . . . . . .

    size := SizeOf(Bufer);

    GetComputerName(@Bufer,Size);

    edit1.text:=bufer;

    Пути к системным каталогам Windows

    Функции GetWindowsDirectory, GetSystemDirectory и GetTempPath находят путь к каталогу, к системному каталогу и к каталогу временных файлов Windows. Например, функция GetSystemDirectory определена как:

    U1NTGetSystemDirectory(

    LPTSTRIpBuffer, // Адрес буфера системного каталога.

    UINTnSize

    ); // Размер буфера каталога.
    UINTGetWindowsDirectory(

    LPTSTRIpBuffer, // Адрес буфера каталога Windows.
    UINT nSize // Размер буфера каталога.

    );

    DWORD GetTempPath(

    DWORD nBufferLength, // Размер буфера в символах.

    LPTSTR IpBuffer // Указатель на буфер пути к каталогу

    // временных файлов.

    );
    Соответствующие описание в Delphi:
    function GetWindowsDirectory(lpBuffer: PChar; uSize: UINT): UINT; stdcall;

    function GetWindowsDirectory; external kernel32 name 'GetWindowsDirectoryA';

    function GetTempPath(nBufferLength: DWORD; lpBuffer: PChar): DWORD; stdcall;

    function GetTempPath; external kernel32 name 'GetTempPathA';

    function GetSystemDirectory(lpBuffer: PChar; uSize: UINT): UINT; stdcall;

    function GetSystemDirectory; external kernel32 name 'GetSystemDirectoryA';
    Каждая из этих функций возвращает количество символов, помещенных в буфер строки. Размер буферов должен быть на единицу больше длины соответ­ствующей символьной константы:
    MAX_PATH = 260;

    На компьютере возможен такой вывод:

    С:\WINNT

    C:\WINNT\System32

    С:\TEMP\
    Версия операционной системы

    Функция GetVersionEx возвращает информацию о версии операционной системы Windows и может использоваться для определения рабочей системы -Windows 95, Windows 98 или Windows NT. Она объявляется как

    BOOLGetVersionEx(

    LPOSVERSIONINFOIpVersionlnformation. // Указатель на структуру

    //с информацией о версии.

    );

    где IpVersionlnformation - указатель на структуру OSVERSIONINFO, кото­рая определена следующим образом:

    typedef struct _OSVERSIONINFO (

    DWORD dwOSVersionlnfoSise;

    DWORD dwMajorVersion;

    DWORD dwMinorVersion;

    DWORD dwBuildNumber;

    DWORD dwPlatformId;

    TCHAR szCSDVersion[ 128 ];

    ) OSVERSIONINFO;
    dwOSVersionlnfoSize

    Задает размер структуры OSVERSIONINFO в байтах. Для структур это являет­ся общим требованием. Так как DWORD - четырехбайтовое беззнаковое типа long и поскольку Delphi и VB преобразуют строку из 128 символов в массив символов ANSI из 128 байт, общий размер структуры составляет. 4x5+ 128 = 148 байт. Это значе­ние возвращает функция Len для VB и SizeOf для Delphi.

    dwMajorVersion

    Указывает номер основной версии операционной системы. Например, для Windows NT версии 3.51 номер основной версии - 3. Для Windows NT 4.0 и Windows 9х номер основной версии - 4.

    dwMinorVersion

    Указывает дополнительный номер версии операционной системы. Например, Для Windows NT версии 3.51 дополнительный номер версии - 51. Для Windows NT 4.0 и Windows 95 дополнительный номер версии - 0. Для Windows 98 допол­нительный номер версии - 10.

    dwBuildNumber

    Указывает номер сборки операционной системы для Windows NT. Для Windows 9х два младших байта содержат номер сборки операционной системы, а два старших байта - номер основной версии и дополнительный номер версии.

    dwPiatformId

    Идентифицирует платформу операционной системы, может иметь одно из следующих значений:
    VER_PLATFORM_WIN32s (= 0) . Win32s, работающая на Windows

    VER_PLATFORM_WIN32_WINDOWS (= 1). Win32, работающая на Windows 95 или

    Windows 98.

    VER_PLATFORM_WIN32_NT (= 2). Win32, работающая на Windows NT

    szCSDVersion

    В Windows NT содержит строку завершающеюся нулевым символом, например «Service Pack3», которая указывает самую последнюю версию установленного в системе служебного пакета программ (service pack). Строка будет пустой, если служебный пакет не установлен. В Windows 95 включает строку с завершающим нулевым символом, в которой может быть произвольная дополнительная информация об операционной системе.
    Соответствующие описание в Delphi:
    function GetVersionEx(var lpVersionInformation: TOSVersionInfo): BOOL; stdcall;

    function GetVersionEx; external kernel32 name 'GetVersionExA';
    _OSVERSIONINFOA = record

    dwOSVersionInfoSize: DWORD;

    dwMajorVersion: DWORD;

    dwMinorVersion: DWORD;

    dwBuildNumber: DWORD;

    dwPlatformId: DWORD;

    szCSDVersion: array[0..127] of AnsiChar;
    Такой подход реализует передачу адреса структуры OSVERSIONINFO по ссылке.

    Type OSVERSIONINFO

    dwOSVersionlnfoSize As Long

    dwMajorVersion As Long

    dwMinorVersion As Long

    dwBuildNumber As Long

    dwPlatformId As Long

    szCSDVersion As String * 128 ' 128 символов.
    End Type

    Небольшая функция на VB возвращает наименование операционной системы:

    PublicFunctionGetOsVersion() AsString

    Dim Iret As Long

    Dim osverinfo As OSVERSIONINFO

    Osverinfo.dwOSVersionlnfoSize = Len(osverinfo)

    Iret = GetVersionEx(osverinfo)

    If Iret = 0 Then

    GetOSVersion = "unknown"

    Else

    Select Case osverinfo.dwPlatformId & "/" & osverinfo.dwMajorVersion _

    & " "& osverinfo.dwMinorVersion

    Case "1/4/0"

    GetOSVersion = "Win95"

    Case "1/4/10"

    GetOSVersion = "Win98"

    Case "2/3/51 "

    GetOSVersion = "WinNT351"

    Case "2/4/0"

    GetOSVersion = "WinNT4 "

    Case "2/5/1"

    GetOSVersion= "WinXP "

    End Select

    End If

    EndFunction
    Системные метрики
    Функция GetSystemMetrics получает информацию о метриках (системе единиц измерения) объектов операционной системы.Декларация в VC++ проста:

    Int GetSystemMetrics(

    intnlndex// Системная метрика или установки конфигурации.

    ) ;
    Соответствующие описание в Delphi (unit Windows):

    function GetSystemMetrics(nIndex: Integer): Integer; stdcall;

    function GetSystemMetrics; external user32 name 'GetSystemMetrics';
    Это переводится в VB так:

    Declare Function GetSystemMetrics Lib "user32 " ( _

    ByVal nIndex As Long _

    ) AsLong

    Параметр nIndex принимает значение одной из 84 возможных констант. Функция возвращает запрошенные единицы измерения (в общем случае в пиксе­лах или в безразмерных единицах).

    Чтобы дать общее представление о типе возвращаемой информации, здесь приведены образцы некоторых констант для этой функции. Единицы измерения высоты и ши­рины приведены в пикселах:

    SM_CMOUSEBUTTOMS = 43 // Delphi ' Количество клавиш мыши.

    Const SM_CMOUSEBUTTOMS = 43 // VB

    SM_MOUSEWHEELPRESENT = 75 ' Истина (True), если мышь имеет

    ' колесо прокрутки.

    ' (Только Win NT 4 или Win 98.)

    SM_SWAPBUTTON = 23 ' Истина (True), если клавиши мыши

    ' можно поменять местами (мышь ' для левши).

    SM_CXBORDER = 5 ' Ширина и высота рамки окна.

    SM_CYBORDER = 6

    SM_CXSCREEN = 0 ' Ширина и высота экрана.

    SM_CYSCREEN = 1

    SM_CXFULLSCREEN = 16 ' Ширина и высота области

    ' приложения в полноэкранном

    SM_CYFULLSCREEN = 17 'режиме.

    SM_CXHTHUMB = 10 'Ширина прямоугольного курсора

    'в горизонтальной полосе 'прокрутки.

    SM_CXICONSPACING = 38 'Размеры ячейки сетки для

    SM_CYICONSРАСING = З9 'значка в режиме просмотра с 'крупными значками.

    SM_CYCAPTION = 4 ' Высота стандартной области 'заголовка.
    Далее представлена примерный фрагмент программы (Delphi).
    Label1.Caption:= ' Ширина и высота рамки окна = '+ inttostr(GetSystemMetrics( SM_CXBORDER))+ ', '+ inttostr( GetSystemMetrics(SM_CYBORDER));

    Label2.Caption:= ' Высотазаголовка = '+ inttostr( GetSystemMetrics(SM_CYCAPTION));

    Label3.Caption:= ' Ширинакурсора = '+ inttostr( GetSystemMetrics(SM_CXCURSOR)); Label4.Caption:= ' Высотакурсора = '+ inttostr( GetSystemMetrics(SM_CYCURSOR)); Label5.Caption:= ' Ширинаиконки = '+ inttostr( GetSystemMetrics((SM_CXICON)); Label6.Caption:= ' Минимальнаяширинаокна = '+ inttostr(GetSystemMetrics( SM_CXMIN));
    Системные параметры
    Функция SystemParamterslnfo - это мощная функция, предназначенная для получения или установки всех системных параметров. Она может также в процессе установки параметра обновлять пользовательские профили. Ниже приведена ее декларация:

    BOOLSystemParametersInfo (

    UINTuiAction, // Запрашиваемый или устанавливаемый

    // системный параметр.

    UINТ uiParam, // Зависит от принятого системного // параметра.

    PVOIDpvParam, // Зависит от принятого системного параметра.

    UINTfWinIni // Флаг обновления пользовательского профиля.
    };
    Соответствующие описание в Delphi (unit Windows):
    function SystemParametersInfo; external user32 name 'SystemParametersInfoA';

    function SystemParametersInfo(uiAction, uiParam: UINT;

    pvParam: Pointer; fWinIni: UINT): BOOL; stdcall;


    Она может быть переведена в VB так:

    Declare Function SystemParametersInfo Lib "user32" _

    Alias "SystemParametersInfoA" ( _

    ByVal uiAction As Long, _

    ByVal uiParam As Long, _

    pyParam As Any, _

    ByVal fWinIni As Long _

    ) As Long
    Заметьте, что для корректного преобразования типов (type safety) можно из­менять тип данных pvParam в зависимости от принятого системного параметра.

    Эта функция может принимать, по меньшей мере, 90 различных зна­чений uiAction. Ниже приведены некоторые константы uiAction:

    SPI_GETACCESSTIMEOUT - используется для определения данных о временных интервалах, относящихся к специальным возможностям Windows;

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

    SPI_GETBEEP - признак разрешения звуковых сигналов;

    SPI_GETBORDER – параметру присваивается коэффициент, управляющий толщиной рамки для изменения размеров окна;

    SPI_GETDEFAULTINPUTLANG – параметру присваивается 32- разрядный дескриптор раскладки клавиатуры по умолчанию;

    SPI_GETDRAGFULLWINDOWS – характеристики перемещения окна мышью;

    SPI_GETFASTTASKSWITCH – признак определяющий быстрое переключение задач;

    SPI_GETFILTERKEYS - используется для определения данных о специальных возможностях, относящихся к работе с клавиатурой;

    SPI_GETFONTSMOOTHING - режимы сглаживания шрифтов;

    SPI_GETGRIDGRANULARITY – гранулярность сетки рабочего стола;

    SPI_GETICONMETRICS - используется для определения информации о характеристиках иконок;
    Но мы рассмотрим всего один из примеров для SPI_GETICONMETRICS на VB. Обратите внима­ние, что функция возвращает в случае успеха ненулевое значение и нуль в случае неудачи. Она устанавливает GetLastError, так что можно использовать значе­ние VB Err.LastDLLError.
    Характеристики системных иконок
    Получать или устанавливать характеристики системных значков (icons), по­добных тем, которые появляются на рабочем столе, можно с помощью констант:

    Public Const SPI_GETICONMETRICS = 45

    Public Const SPI_SETICONMETRICS = 46

    Согласно документации о SPI_GETICONMETRICS, параметр pvParam должен указывать на структуру ICONMETRICS, в которую записываются запрашиваемые сведения. В SPI_SETICONMETRICS параметр pvParam должен ссылаться на структуру ICONMETRICS, которая содержит новые параметры.

    В обоих случаях нужно также присвоить члену cbSize структуры ICONMETRICS и параметру uiParam в SystemParameterslnfо значение размера структуры в байтах.

    Объявление структуры ICONMETRICS выглядит так:

    typedef struct tagICONMETRICS {

    UINT cbSize;

    int iHorzSpacmg;

    int iVertSpacing;

    int iTitleWrap;

    LOGFONT IfFont;

    { ICONMETRICS, FAR *LPICONMETRICS;

    А структура LOGFONT объявляется следующим образом:

    typedef struct tagLOGFONT { // If.

    LONG If Height;

    LONG IfWidth;

    LONG IfEscapement;

    LONG IfOrientation;

    LONG IfWeight;

    BYTE IfItalic;

    BYTE IfUnderline;

    BYTE IfStrikeout;

    BYTE IfCharSet;

    BYTE IfOutPrecision;

    BYTE IfClipPrecision,

    BYTE IfQuality;

    BYTE IfPitchAndFamily;

    TCHAR lfFaceName[LF_FACESIZE];

    } LOGFONT;

    где

    Public Const LF_FACESIZE = 32

    Здесь есть важный момент, который следует отметить. Очень часто одна струк­тура содержит указатели на другие структуры. Однако в данном случае переменная IfFont является на самом деле структурой, а не указателем на нее. Следовательно, необходимо объединить обе структуры при создании версии VB:

    PublicTypeICONMETRICS

    cbsize As Long

    iHorzSpacing As Long

    iVertSpacing As Long

    iTitleWrap As Long

    IfHeight As Long

    IfWidth As Long

    IfEscapement As Long

    lEOrientation As Long

    IfWeight As Long

    Ifltalic As Byte

    IfUnderline As Byte

    IfStrikeout As Byte

    IfCharset As Byte

    IfOutPrecision As Byte

    IfClipPrecision As Byte

    IfQuality As Byte

    IfPitchAndFamily As Byte

    IfFaceName As String * LF_FACESIZE

    End Type

    Заметьте, что эта структура построена грамотно с точки зрения выравнивания членов. Под IfFaceName можно было бы использовать и массив байтов, и строку фиксированной длины. Но при выводе возвращаемого значения проще использо­вать строку фиксированной длины.

    Далее приведена программа, которая использует эту функцию:

    Public Sub PrintlconMetrics

    Dim im As ICONMETRICS

    im.cbSize*= Len(im)

    Iret = SystemParametersInfo(SPI_GETICOMMETRICS, Len(im), im, 0&)

    If Iret = 0 Then

    RaiseApiError Err.LastDllError

    Else

    Debug.Print "Hor Spacing:" & im.iHorzSpacing

    Debug.Print "Vert Spacing:" & im.iVertSpacing

    Debug.Print im.IfFaceName & "/"

    EndIf

    EndSub

    Вывод на компьютере может быть таким:

    Hor Spacing:101

    Vert Spacing:109

    MS Sans Serif
    Системные цвета
    Функции GetSysColor и SetSysColors используются для получения и ус­тановки цветов различных элементов системы, таких как кнопки, строки заголов­ков и т.д. Цветовой палитрой может также управлять пользователь с помощью апплета Display (Экран) на панели Control Panel (Панель управления).

    Декларация GetSysColor проста:

    DWORDGetSysColor (

    int nIndex // Элемент экрана.

    );

    где nIndex может принимать значение одной из множества символьных констант, например

    #define COLOR_ACTIVECAPTION 3
    Соответствующие описание в Delphi (unit Windows):

    function GetSysColor; external user32 name 'GetSysColor';

    function GetSysColor(nIndex: Integer): DWORD; stdcall;
    В VB это выглядит так:

    Declare Function GetSysColor Lib "user32" (ByVal nIndex As Long) As Long

    PublicConstCOLOR_ACTIVECAPTION = 3

    Возвращаемое значение - это цвет в формате RGB. В частности, каждый цвет занимает один байт в возвращаемом значении типа unsigned long: красный. Цвет - младший байт, зеленый - следующий байт, далее - синий цвет. Самый старший байт равен нулю. Байты цветов представлены в переменной тина long в обратном порядке, поскольку при записи переменной в память байты распола­гаются от младших к старшим.
    Объявление функции SetsysColors:

    BOOL WINAPI SetSysColors (

    int cElements, // Количество изменяемых

    // элементов.

    CONST INT *lpaElements, // Адрес массива элементов.
    CONST COLORREF *lpaRgbValues // Адрес массива значений RGB.
    Соответствующие описание в Delphi (unit Windows):

    function SetSysColors(cElements: Integer; const lpaElements;

    const lpaRgbValues): BOOL; stdcall;

    function SetSysColors; external user32 name 'SetSysColors';
    Здесь cElements определяет количество системных элементов, цвет которых требуется изменить; IpaElements - указатель на целочисленный массив VC++ который содержит индексы изменяемых элементов; IpaRgbvalues ссылается на целочисленный массив VC++ новых значений цвета в формате RGB.

    Версия VB записывается так:

    Declare Function SetSysColors Lib "user32" ( _

    ByVal nChanges As Long, _

    IpSysColor As Long, _

    IpColorValues As Long _

    ) As Long

    Здесь, перед тем как вызывать функцию, необходимо задать первые элементы для каждого массива-параметра.

    И наконец, заметим, что обе функции возвращают нуль в случае успешного завершения и устанавливают значение GetLastError.

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

    Public Function FlashTitleBarColor()

    Dim i As Integer

    Dim Iret As Long

    Dim SaveColor As Long

    Dim IIndices(0 To 0] As Long

    Dim INewColors(0 To 0) As Long

    ' Получим и сохраним текущий цвет.

    SaveColor = GetSyscolor (COLOR_ACTIVECAPTION)

    Debug.Print "Current color:" & Hex(SaveColor)

    Fori = 1 To 5

    ' Изменяем цвет на красный.

    IIndices (0) = COLOR_ACTIVECAPTION

    INewColors(0) = &HFF

    Iret = SetSysColors(1&, IIndices(0), INewColors(0))

    If Iret = 0 Then

    RaiseApiErrorErr.LastDllError

    End If

    Delay 0.5

    ' Восстанавливаем исходный цвет.

    IIndices(0) = COLOR_ACTIVECAPTION

    INewColors(0) = SaveColor

    Iret = SetSysColors(1&, IIndices(0), INewColors(0))

    If Iret =0 Then

    RaiseApiErrorErr.LastDllError

    End If

    Delay 0.5
    Next

    EndFunction
    Подпрограмма Delayимеет следующий код:

    Sub Delay(rTime As Single)

    ' Задержка на rTime с (min=.01, max-300).

    Dim OldTime As Variant

    ' Береженогобогбережет.

    If rTime < 0.01 Or rTime > 300 Then rTime = 1

    OldTime = Timer

    Do

    DoEvents

    Loop Until Timer - OldTime >= rTime

    End Sub
    Функции для работы со временем
    Во внутрен­ней работе Windows используется универсальное координированное время UTC (Universal Coordinated Time); также встречается термин GMT, то есть «среднее время по Гринвичу» (Greenwich Mean Time), поскольку за точку отсчета принят Гринвич, Англия. Преобразования между системным и местным временем в Windows осуществляются при помощи поправок для местного часового пояса, заданного в системе. Функции Win32 позволяют работать как в мест­ном, так и в системном времени и преобразовывать их по мере необходимости. Win32 также включает ряд функций для работы с файловым временем и датой, то есть временем и датой фай­лов, хранящимися в файловой системе

    Функции Windows, предназначенные для получения информации о времени, перечислены ниже Следует учитывать, что во внутреннем представлении системы время изменяется в тактах таймера, продолжительность которых может изменяться в зависимости от используемо­го процессора и операционной системы. Интервал измерения времени в Win32 обычно занимает от 10 до 15 миллисекунд. Длительность такта определяет точность результатов, возвращаемых этими функциями.
    Основные функции Windows для работы со временем


    Функция

    Описание

    EnumCalendarlnfo


    Перечисляет календарную информацию, зависящую от локального контекста

    EnuinDate Formats


    Перечисляет форматы даты, доступные в заданном локальном контексте

    EnumTimeFormats


    Перечисляет форматы времени, доступные в заданном локальном контексте

    GetLocalTime


    Получает текущее местное время

    GetMessageTime


    Возвращает время (в миллисекундах) поступления последнего сообщения s очередь приложения. Время отсчитывается от начала текущего сеанса рабо­ты в Windows

    GetSystemTime


    Получает текущее системное время


    GetSystemTimeAdjustment


    Определяет, применяется ли в системе периодическая поправка, повышающая точность отсчета системного времени

    GetTickCount


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

    GetTimeFormat


    Форматирует время в заданном локальном контексте

    GetTimeZonelnformation


    Получает информацию о текущем часовом поясе




    SetLocalTime


    Задает местное время





    SetSystemTime


    Задает системное время





    SetSystemTimeAdjustment


    Задает периодическую поправку, применяемую системой для повышения точности отсчета времени




    SetTimeZonelnformation


    Задает часовой пояс





    SystemTimeToTzSpecificLocalTime


    Преобразует системное время в местное







    СОДЕРЖАНИЕ ОТЧЕТА


    1. Постановка задачи.




    1. Краткое изложение теоретических основ интерфейса прикладных программ (API Win32) и библиотеки динамической компоновки (DLL).




    1. Разработать программное обеспечение приложения, обеспечивающего получение следующей системной информации:




      • Имя компьютера, имя пользователя;

      • Пути к системным каталогам Windows;

    • Версия операционной системы;

    • Системные метрики ( не менее 10 метрик);

    • Системные параметры:




    Вариант

    Константы uiAction

    1

    SPI_GETACCESSTIMEOUT, SPI_GETKEYBOARDPREF, SPI_GETSCREENREADER, SPI_SCREENSAVERRUNNING, SPI_SETFILTERKEYS, SPI_SETMINIMIZEDMETRICS

    2

    SPI_GETANIMATION, SPI_GETKEYBOARDSPEED, SPI_GETSCREENSAVEACTIVE, SPI_SETACCESSTIMEOUT, SPI_SETFONTSMOOTHING, SPI_SETMOUSE

    3

    SPI_GETBEEP, SPI_GETLOWPOWERACTIVE, SPI_GETSCREENSAVETIMEOUT, SPI_SETANIMATION, SPI_SETGRIDGRANULARITY, SPI_SETMOUSEBUTTONSWAP

    4

    SPI_GETBORDER, SPI_GETLOWPOWERTIMEOUT, SPI_GETSERIALKEYS, SPI_SETBEEP, SPI_SETHANDHELD, SPI_SETMOUSEHOVERHEIGHT

    5

    SPI_GETDEFAULTINPUTLANG, SPI_GETMENUDROPALIGNMENT, SPI_GETSHOWSOUNDS, SPI_SETBORDER, SPI_SETHIGHCONTRAST, SPI_SETMOUSEHOVERTIME

    6

    SPI_GETDRAGFULLWINDOWS, SPI_GETMINIMIZEDMETRICS, SPI_GETSNAPTODEFBUTTON, SPI_SETDEFAULTINPUTLANG, SPI_SETICONMETRICS, SPI_SETMOUSEHOVERWIDTH

    7

    SPI_GETFASTTASKSWITCH, SPI_GETMOUSE, SPI_GETSOUNDSENTRY, SPI_SETDESKPATTERN, SPI_SETICONTITLELOGFONT, SPI_SETMOUSEKEYS

    8

    SPI_GETFILTERKEYS, SPI_GETMOUSEHOVERHEIGHT, SPI_GETSTICKYKEYS, SPI_SETDESKWALLPAPER, SPI_SETICONTITLEWRAP, SPI_SETMOUSETRAILS

    9

    SPI_GETFONTSMOOTHING, SPI_GETMOUSEHOVERTIME, SPI_GETTOGGLEKEYS, SPI_SETDOUBLECLICKTIME, SPI_SETKEYBOARDDELAY, SPI_SETNONCLIENTMETRICS

    10

    SPI_GETGRIDGRANULARITY, SPI_GETMOUSEHOVERWIDTH, SPI_GETWHEELSCROLLLINES, SPI_SETDOUBLECLKHEIGHT, SPI_SETKEYBOARDPREF , SPI_SETPENWINDOWS

    11

    SPI_GETHIGHCONTRAST, SPI_GETMOUSEKEYS, SPI_GETWINDOWSEXTENSION, SPI_SETDOUBLECLKWIDTH, SPI_SETKEYBOARDSPEED, SPI_SETPOWEROFFACTIVE

    12

    SPI_GETICONMETRICS, SPI_GETMOUSETRAILS, SPI_GETWORKAREA, SPI_SETDRAGFULLWINDOWS, SPI_SETLANGTOGGLE, SPI_SETPOWEROFFTIMEOUT

    13

    SPI_GETICONTITLELOGFONT, SPI_GETNONCLIENTMETRICS, SPI_ICONHORIZONTALSPACING, SPI_SETDRAGHEIGHT, SPI_SETLOWPOWERACTIVE, SPI_SETSCREENREADER

    14

    SPI_GETICONTITLEWRAP, SPI_GETPOWEROFFACTIVE, SPI_ICONVERTICALSPACING, SPI_SETDRAGWIDTH, SPI_SETLOWPOWERTIMEOUT, SPI_SETSCREENSAVEACTIVE

    15

    SPI_GETKEYBOARDDELAY, SPI_GETPOWEROFFTIMEOUT, SPI_LANGDRIVER, SPI_SETFASTTASKSWITCH, SPI_SETMENUDROPALIGNMENT, SPI_SETSCREENSAVETIMEOUT




    • Системные цвета (определить цвет для следующих символьных констант и изменить его на любой другой)




    Вариант

    Параметр nIndex

    1

    COLOR_3DDKSHADOW, COLOR_BTNTEXT, COLOR_ACTIVECAPTION

    2

    COLOR_3DFACE, COLOR_CAPTIONTEXT, COLOR_BACKGROUND

    3

    COLOR_BTNFACE, COLOR_GRAYTEXT, COLOR_DESKTOP

    4

    COLOR_3DHILIGHT, COLOR_HIGHLIGHT, COLOR_ACTIVEBORDER

    5

    COLOR_3DHIGHLIGHT, COLOR_HIGHLIGHTTEXT, COLOR_WINDOWTEXT

    6

    COLOR_BTNHILIGHT, COLOR_INACTIVEBORDER, COLOR_WINDOW

    7

    COLOR_BTNHIGHLIGHT, COLOR_INACTIVECAPTION, COLOR_SCROLLBAR

    8

    COLOR_3DLIGHT, COLOR_INACTIVECAPTIONTEXT, COLOR_MENUTEXT

    9

    COLOR_3DSHADOW, COLOR_INFOBK , COLOR_MENU

    10

    COLOR_BTNSHADOW, COLOR_INFOTEXT, COLOR_CAPTIONTEXT

    11

    COLOR_ACTIVEBORDER, COLOR_MENU, COLOR_INACTIVEBORDER

    12

    COLOR_ACTIVECAPTION, COLOR_MENUTEXT, COLOR_BTNFACE

    13

    COLOR_APPWORKSPACE, COLOR_SCROLLBAR, COLOR_BTNTEXT

    14

    COLOR_BACKGROUND, COLOR_WINDOW, COLOR_INFOTEXT

    15

    COLOR_DESKTOP, COLOR_WINDOWTEXT, COLOR_INFOTEXT




    • Функции для работы со временем:




    Вариант

    Название API-функции

    1

    GetSystemTime, GetTimeZonelnformation,EnumCalendarlnfo

    2

    GetLocalTime, GetTimeZonelnformation, EnuinDate Formats

    3

    GetSystemTime, GetTimeZonelnformation, EnumTimeFormats

    4

    GetLocalTime, GetTimeZonelnformation, GetMessageTime

    5

    GetSystemTime, GetTimeZonelnformation, GetSystemTimeAdjustment

    6

    GetLocalTime, GetTimeZonelnformation, GetTickCount

    7

    GetSystemTime, GetTimeZonelnformation, GetTimeFormat

    8

    GetLocalTime, GetTimeZonelnformation, SetSystemTime

    9

    GetSystemTime, GetTimeZonelnformation, SetLocalTime

    10

    GetLocalTime, GetTimeZonelnformation, SetSystemTimeAdjustment

    11

    GetSystemTime, GetTimeZonelnformation, SetTimeZonelnformation

    12

    GetLocalTime, GetTimeZonelnformation,SystemTimeToTzSpecificLocalTime

    13

    GetSystemTime, GetTimeZonelnformation, SetLocalTime

    14

    GetLocalTime, GetTimeZonelnformation, SetSystemTime

    15

    GetSystemTime, GetTimeZonelnformation, SetLocalTime




    • Дополнительные API-функции :




    Вариант

    Название API-функции

    1

    ActivateKeyboardLayout, GetCurrencyFormat, GetLastError, OemToChar

    2

    CharToOem, GetCursor, GetLocaleInfo, OemToCharBuff,

    3

    AnsiToOemBuff, GetCursorPos, GetNumberFormat, SetCaretPos,

    4

    ClipCursor, GetDoubleClickTime, GetOEMCP, SetCursor

    5

    CreateCaret, GetEnvironmentStrings, GetQueueStatus, SetCursorPos

    6

    DestroyCaret, GetEnvironmentVariable, GetSystemDefaultLangID, SetDoubleClickTime

    7

    EnumSystemCodePages, GetInputState, GetLastError, SetKeyboardState

    8

    ExitWindowsEx, GetKBCodePage, GetSystemDefaultLCID, SetCaretBlinkTime

    9

    GetACP, GetKeyboardLayout, GetSystemPowerStatus, SetComputerName

    10

    GetAsyncKeyState, GetKeyboardLayoutList, GetTickCount, SetLocaleInfo

    11

    GetCaretBlinkTime, GetKeyboardLayoutName, GetLastError, SetSystemCursor

    12

    GetCaretPos, GetKeyboardState, GetUserDefaultLangID, SetSystemPowerState

    13

    GetClipCursor, GetKeyboardType, GetUserDefaultLCID, ShowCursor

    14

    GetCommandLine, GetKeyNameText, MessageBeep, SwapMouseButton

    15

    GetCPInfo, GetKeyState, GetLastError, UnloadKeyboardLayout




    1. Примеры разработанных приложений (результаты и тексты программ).


    написать администратору сайта