Вы находитесь на странице: 1из 4

МИНОБРНАУКИ РОССИИ

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


высшего образования
"МИРЭА - Российский технологический университет"
РТУ МИРЭА

Институт информационных технологий (ИТ)


Кафедра инструментального и прикладного программного обеспечения
(ИиППО)

ОТЧЕТ ПО ЛАБОРАТОРНОЙ РАБОТЕ № 2

по дисциплине
«Системное программное обеспечение»

Выполнил студент группы ИКБО-01-17 Ананьев Ф.А.

Принял ассистент Алпатов А.Н.

Работа выполнена «___» ________ 2020 г.

«Зачтено» «___» ________ 2020 г.

Москва 2020
Цель работы: получение практических навыков по
программированию в Win32 API с использованием аппаратных и системных
функций.
Задание:
Разработать программу, обеспечивающую получение системной
информации:
1) имя компьютера, имя пользователя;
2) пути к системным каталогам Windows;
3) версия операционной системы;
4) системные метрики (не менее двух метрик);
5) системные параметры (не менее двух параметров);
Код программы:
#include <windows.h>
#include <winuser.h>
#include <tchar.h>
#include <locale.h>
#include <string.h>
#include <Lmcons.h>
#include <stdio.h>
#include <stdlib.h>

int main()
{
char buffer[1024];
DWORD size;

size=sizeof(buffer);

GetComputerName(buffer,&size);
printf("Computer name: %s\n", buffer);

GetUserName(buffer, &size);
printf("Username: %s\n", buffer);

GetWindowsDirectory(buffer, 1024);
printf("Windows directory: %s\n", buffer);

GetSystemDirectory(buffer, 1024);
printf("System directory: %s\n", buffer);

DWORD dwVersion = 0;
DWORD dwMajorVersion = 0;
DWORD dwMinorVersion = 0;
DWORD dwBuild = 0;

2
dwVersion = GetVersion();

// Get the Windows version.

dwMajorVersion = (DWORD)(LOBYTE(LOWORD(dwVersion)));
dwMinorVersion = (DWORD)(HIBYTE(LOWORD(dwVersion)));

// Get the build number.

if (dwVersion < 0x80000000)


dwBuild = (DWORD)(HIWORD(dwVersion));

printf("Version is %d.%d (%d) (deprecated information)\n",


dwMajorVersion,
dwMinorVersion,
dwBuild);

int value;
value = GetSystemMetrics(SM_CXCURSOR);
printf("\n### System metrics\nCursor width: %d pixels\n",
value);

value = GetSystemMetrics(SM_CMOUSEBUTTONS);
printf("Mouse has %d buttons\n", value);

value = GetSystemMetrics(SM_CMONITORS);
printf("User has %d monitor(s)\n", value);

int aMouseInfo[3];

SystemParametersInfo(SPI_GETMOUSE, 0, &aMouseInfo, 0);


printf("\n### System parameters: \nMouse speed: %d\n",
aMouseInfo[2]);
printf("Mouse treshold(x,y): %d %d \n", aMouseInfo[0],
aMouseInfo[1]);

SystemParametersInfo(SPI_GETKEYBOARDSPEED, 0, &value, 0);


printf("Keyboard speed: %d\n", value);

return 0;
}

3
Рисунок 1 – вывод программы в консоли
Данная программа скомпилирована с помощью средств MinGW, что
позволяет выполнить устаревшую функцию GetVersion(), результатом
вывода которой будет версия 6.2 (9200), соответствующая Windows, 8 на всех
системах, версия которых выше.
Вывод: в ходе проделанной работы изучены возможности Win32 API,
разработана программа, обеспечивающая получение системной информации.