Лабораторная работа 1 Пантелеева БСТ1904
.docxМинистерство цифрового развития, связи и массовых коммуникаций Российской Федерации
Ордена Трудового Красного Знамени
Федеральное государственное образовательное бюджетное учреждение высшего профессионального образования
Московский технический университет связи и информатики
Лабораторная работа №1
по теме: «Функции получения системной информации»
Выполнила: Пантелеева К.А.
Группа: БСТ1904
Вариант: 13
Москва, 2021
Оглавление
Цель работы 3
Лабораторное задание 3
Код программы 3
Результаты работы 6
Цель работы
Получение практических навыков по программированию в Win32 API с использованием аппаратных и системных функций.
Лабораторное задание
Разработать программное обеспечение приложения, обеспечивающего получение следующей системной информации:
Имя компьютера, имя пользователя;
Пути к системным каталогам Windows;
Версия операционной системы;
Системные метрики (не менее 2 метрик);
Системные параметры (не менее 2 параметров);
Системные цвета (определить цвет для некоторых символьных констант и изменить его на любой другой);
Функции для работы со временем;
Дополнительные API-функции: GetClipCursor, GetKeyboardType, GetUserDefaultLCID, ShowCursor.
Код программы
OS labs.cpp
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <windows.h>
#include <locale>
#include <VersionHelpers.h>
#define cout wcout
//#define OSVERSIONINFO OSVERSIONINFOEX
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
setlocale(LC_ALL, "rus");
cout.imbue(locale("rus_rus.1251"));
WCHAR str[4096];
DWORD sz = 4096;
GetUserName(str, &sz); //имя пользователя
cout << "User name: " << str << endl;
GetComputerName(str, &sz);//имя компьютера
cout << "Computer name: " << str << endl;
GetUserName(str, &sz);//имя пользователя
cout << "User name: " << str << endl;
GetSystemDirectory(str, 4096); //Путь к системной папке
cout << "The path to the system folder: " << str << endl;
GetWindowsDirectory(str, 4096);//Путь к папке Windows
cout << "The path to the windows folder: " << str << endl;
GetTempPath(4096, str);//Путь к временной папке
cout << "The path to the temporary folder: " << str << endl;
OSVERSIONINFO osversion;
memset(&osversion, 0, sizeof(OSVERSIONINFO));
osversion.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
//GetVersionEx(&osversion);
if (!IsWindows10OrGreater()) { cout << "Not win10" << endl; }
else {cout << "Windows 10"<< endl; }
cout << "System metrics:" << endl
//Системные метрики
<< "Screen Resolution: " << GetSystemMetrics(0)
//Разрешение экрана
<< "x" << GetSystemMetrics(1) << endl
<< "Does the mouse have a scroll wheel? ";
//Есть ли у мыши колесо прокрутки?
GetSystemMetrics(75) ? cout << "Yes" << endl : cout << "No" << endl;
cout << "The number of keys on the mouse: " << GetSystemMetrics(43) << endl
//Количество клавиш на мыши
<< "Can the mouse keys be swapped?";
//Можно ли поменять местами клавиши мыши?
GetSystemMetrics(23) ? cout << "Yes" << endl : cout << "No" << endl;
ACCESSTIMEOUT param;
param.cbSize = sizeof(ACCESSTIMEOUT);
UINT uiParam = sizeof(param);
SystemParametersInfo(SPI_GETACCESSTIMEOUT, 0, ¶m, 0);
cout << endl << "System Parameters:\nThe SPI_GETACCESSTIMEOUT parameter: " << uiParam << endl;// Временные интервалы
//Системные параметры:\параметр ВРЕМЕНИ ОЖИДАНИЯ доступа SPI_GET:
ANIMATIONINFO param2;
param2.cbSize = sizeof(ANIMATIONINFO);
UINT uiParam2 = sizeof(param2);
SystemParametersInfo(SPI_GETANIMATION, 0, ¶m2, 0);
cout << "The SPI_GETANIMATION parameter: " << uiParam2 << endl; //Данные об анимации
unsigned int param3;
SystemParametersInfo(SPI_GETBEEP, 0, ¶m3, 0);
cout << "Indication of the resolution of audio signals: " << param3 << endl;
//Индикация разрешения звуковых сигналов
ICONMETRICS param4;
param4.cbSize = sizeof(ICONMETRICS);
UINT uiParam4 = sizeof(param4);
SystemParametersInfo(SPI_GETICONMETRICS, 0, ¶m4, 0);
cout << "A flag that gives information about the characteristics of icons: " << uiParam4 << endl;
//Флаг, дающий информацию о характеристиках иконок
int n[] = { COLOR_3DDKSHADOW, COLOR_3DDKSHADOW };
COLORREF color = GetSysColor(n[0]);//Dark shadow for three-dimensional display elements.
COLORREF color2 = GetSysColor(n[1]);//Desktop.
unsigned long p[] = { color, color2 };
COLORREF newcolor[] = { RGB(150, 75, 0), RGB(0, 0, 255) };//Коричневый//Синий
SetSysColors(2, n, newcolor);
cout << "The color of the shadow for the elements has been changed.\nPress any key to return to the original state.";
//Цвет тени для элементов был изменен.\нажмите любую клавишу, чтобы вернуться в исходное состояние.
_getch();
SetSysColors(2, n, p);
SYSTEMTIME var1, var2;
GetLocalTime(&var1);
GetSystemTime(&var2);
cout << "\n\nTime information:\nLocal Time: date " << var1.wDay << "." << var1.wMonth << L"." << var1.wYear << " time " << var1.wHour << ":" << var1.wMinute
<< "\nSystem time: "
<< "date " << var2.wDay << "." << var2.wMonth << "." << var2.wYear << " time " << var2.wHour << ":" << var2.wMinute << endl;
cout << "\n\n Individual task\n";
RECT mem;
GetClipCursor(&mem);
cout << "\n1.GetClipCursor = " << mem.left << "." << mem.bottom << "." << mem.right << "." << mem.top;
wcout << "\n1.The cursor is locked within {200,200,800,800}\n";
mem = { 200,200,800,800 };
ClipCursor(&mem);
cout << "\n1.GetClipCursor. New values = " << mem.left << "." << mem.bottom << "." << mem.right << "." << mem.top;
_getch();
cout << "\n2.GetKeyboardLayoutType = " << str
<< "\n3.GetUserDefaultLCID (ID of the operating system's user-defined language) = " << GetUserDefaultLCID() << endl;
cout << "\n4.Cursor Parameters= " << ShowCursor(1) << endl;
system("PAUSE");
return 0;
}
Результаты работы