Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ЛР-1 ОС

.docx
Скачиваний:
12
Добавлен:
10.03.2021
Размер:
290.63 Кб
Скачать

ФЕДЕРАЛЬНОЕ АГЕНТСТВО СВЯЗИ

Ордена Трудового Красного Знамени

федеральное государственное бюджетное образовательное учреждение

высшего образования

Московский технический университет связи и информатики

----------------------------------------------------------------------------------------------

Кафедра Математической кибернетики и информационных технологий

ЛАБОРАТОРНАЯ РАБОТА № 1

по дисциплине

ОПЕРАЦИОННЫЕ СИСТЕМЫ

«Функции получения системной информации»

Выполнил:

Студент группы БСТ 1801

Францев Артём

Москва 2020

Название работы: Функции получения системной информации.

Цель работы: получение практических навыков по программированию в Win32 API

с использованием аппаратных и системных функций.

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

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

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

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

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

  • Системные параметры (не менее 2 параметров);

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

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

  • Дополнительные API-функции: GetACP, GetKeyboardLayout, GetSystemPowerStatus, SetComputerName.

Код программы представлен ниже:

#include "pch.h"

#include <iostream>

#include <conio.h>

#include <windows.h>

#include <locale>

#include <VersionHelpers.h>

#include <winbase.h>

#define cout wcout

using namespace std;

void getSysOpType()

{

NTSTATUS(WINAPI *RtlGetVersion)(LPOSVERSIONINFOEXW);

OSVERSIONINFOEXW osInfo;

*(FARPROC*)&RtlGetVersion = GetProcAddress(GetModuleHandleA("ntdll"), "RtlGetVersion");

if (NULL != RtlGetVersion)

{

osInfo.dwOSVersionInfoSize = sizeof(osInfo);

RtlGetVersion(&osInfo);

cout << "номер основной версии операционной системы:" << osInfo.dwMajorVersion << endl

<< "номер дополнительной версии операционной системы: " << osInfo.dwMinorVersion << endl

<< "номер сборки операционной системы: " << osInfo.dwBuildNumber << endl;

}

}

int getPower() {

cout << "Функция GetSystemPowerStatus: ";

int a;

SYSTEM_POWER_STATUS status;

GetSystemPowerStatus(&status);

a = status.BatteryFlag;

if (a == 1) {

cout << "Устройство имеет заряд больше 66%";

}

if (a == 2) {

cout << "Устройство имеет заряд меньше 33%";

}

if (a == 4) {

cout << "Устройство имеет заряд ниже 5%";

}

if (a == 9) {

cout << "Устройство заряжется и имеет заряд больше 66%";

}

return EXIT_SUCCESS;

}

int main()

{

int vvod = -1;

setlocale(LC_ALL, "rus");

cout.imbue(locale("rus_rus.1251"));

while (vvod != 9) {

system("cls");

cout << "Здравствуйте, выберите нужный раздел, введя ее номер: " << endl

<< "1. Имя компьютера и пользователя" << endl

<< "2. Пути к системным каталогам Windows" << endl

<< "3. Версия операционной системы" << endl

<< "4. Системные метрики" << endl

<< "5. Системные параметры" << endl

<< "6. Системные цвета" << endl

<< "7. Функции для работы со временем" << endl

<< "8. Дополнительные API-функции" << endl

<< "9. Выход" << endl;

cin >> vvod;

switch (vvod)

{

case 1:

{

char buffer1[256];

DWORD size = sizeof(buffer1);

GetUserName((LPWSTR)&buffer1, &size);

cout << "Имя пользователя: " << (LPWSTR)&buffer1 << endl;

char buffer2[256];

DWORD size2 = sizeof(buffer2);

if (GetComputerName((LPWSTR)&buffer2, &size2))

cout << "Имя компьютера: " << (LPWSTR)&buffer2 << endl;

system("PAUSE");

break;

}

case 2:

{

WCHAR s[4096];

GetTempPath(4096, s);

cout << "Путь к временной папке: " << s << endl;

GetSystemDirectory(s, 4096);

cout << "Путь к системной папке: " << s << endl;

GetWindowsDirectory(s, 4096);

cout << "Пути к папке windows: " << s << endl;

system("PAUSE");

break;

}

case 3:

{

getSysOpType();

system("PAUSE");

break;

}

case 4:

{

cout << "Системные метрики:" << endl

<< "\tРазрешение экрана: " << GetSystemMetrics(0)

<< "x" << GetSystemMetrics(1) << endl

<< "\tЕсть ли колесо прокрутки у мышки? ";

GetSystemMetrics(75) ? cout << "Да" << endl : cout << "Нет" << endl;

cout << "\tКоличество клавиш у мышки: " << GetSystemMetrics(43) << endl

<< "\tМеняются ли клавиши мыши местами? ";

GetSystemMetrics(23) ? cout << "Да" << endl : cout << "Нет" << endl;

system("PAUSE");

break;

}

case 5:

{

BOOL parametr;

SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, &parametr, 0);

cout << "Системные параметры:\n\tПараметр SPI_SETDESKWALLPAPER: "; parametr ? cout << "Есть\n" : cout << "Нет\n";

SystemParametersInfo(SPI_SETCURSORSHADOW, 0, &parametr, 0);

cout << "\tПараметр SPI_SETCURSORSHADOW: "; parametr ? cout << "Есть\n" : cout << "Нет\n";

SystemParametersInfo(SPI_GETBEEP, 0, &parametr, 0);

cout << "\tПризнак разрешения звуковых сигналов: "; parametr ? cout << "Есть\n" : cout << "Нет\n";

system("PAUSE");

break;

}

case 6:

{

int n[] = { COLOR_WINDOW, COLOR_WINDOWTEXT};

COLORREF color = GetSysColor(n[0]);

COLORREF color2 = GetSysColor(n[1]);

unsigned long p[] = { color, color2 };

COLORREF newcolor[] = { RGB(150, 75, 0), RGB(0, 255, 255) };

cout << "Коричневый начальный цвет: " << GetSysColor(n[0]) << endl;

SetSysColors(2, n, newcolor);

cout << "Cиний конечный цвет: " << GetSysColor(n[0]) << endl;

cout << "Изменён цвет тени для элементов.\n";

system("PAUSE");

SetSysColors(2, n, p);

break;

}

case 7:

{

SYSTEMTIME time1, time2;

GetLocalTime(&time1);

GetSystemTime(&time2);

cout << "Информаци о времени:\nЛокальное время: дата " << time1.wDay << "." << time1.wMonth << L"." << time1.wYear << " время " << time1.wHour << ":" << time1.wMinute

<< "\nСистемное время: " << "дата " << time2.wDay << "." << time2.wMonth << "." << time2.wYear << " время " << time2.wHour << ":" << time2.wMinute << endl;

system("PAUSE");

break;

}

case 8:

{

cout << "Индивидуальное задание:\n";

getPower();

cout << endl << "Функция SetComputerName:" << endl;

char buffer2[256];

DWORD size2 = sizeof(buffer2);

if (GetComputerName((LPWSTR)&buffer2, &size2))

cout << "\tИмя компьютера: " << (LPWSTR)&buffer2 << endl;

cout << "\tНовое компьютера: EVGENY-POCC" << endl;

char newname[256] = "EVGENY-POCC";

SetComputerName((LPCWSTR)&newname);

cout << "Функция GetACP: "

<< GetACP() << endl;

cout << "Функция GetKeyboardLayout: ";

cout << GetKeyboardLayout(0) << endl;

cout << "\tUS раскладка - 04 190 409" << endl

<< "\tRU раскладка - 04 190 419" << endl;

system("PAUSE");

break;

}

case 9:

break;

default:

cout << "Укажите правильный раздел.";

}

}

return 0;

}

Далее представлены результат работы программы по каждому из разделов.

Рисунок 1 - "Титул программы"

Рисунок 2 – вывод имени пользователя и компьютера

Рисунок 3- вывод путей к системным каталогам

Рисунок 4 - вывод информации об версии ОС

Рисунок 5 - вывод некоторых системных метрик

Рисунок 6 - вывод системных параметров

Рисунок 7 - вывод результата работы с системными цветами

Рисунок 8 - вывод результатов работы функции со временем

Рисунок 9 - вывод результат работы дополнительных API-функций\

Рисунок 10 - выход из программы

Соседние файлы в предмете Операционные системы