os1
.pdfФЕДЕРАЛЬНОЕ АГЕНТСТВО СВЯЗИ
Федеральное государственное образовательное бюджетное учреждение
высшего профессионального образования
Московский технический университет связи и информатики
----------------------------------------------------------------------------------------------------
Кафедра Математической кибернетики и информационных технологий
Лабораторная работа № 1 по дисциплине ОПЕРАЦИОННЫЕ СИСТЕМЫ на тему:
«Функции получения системной информации»
Выполнил:
Студент: Иванюк Пѐтр Григорьевич (Ф.И.О.)
Группа: 2ВМ15025
Проверил:
Старший преподаватель: Королькова Татьяна Валерьевна (Ф.И.О., должность преподавателя)
Москва 2018
Цельработы:Получение практических навыков по программированию в Win32 API с
использованием аппаратных и системных функций.
Разработанные приложения, обеспечивающие получение системной информации:
Имя компьютера, имя пользователя
#include <windows.h> #include <stdio.h> char str[]="";
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
char lpBuffer[MAX_COMPUTERNAME_LENGTH+1], lpBuffer1[MAX_COMPUTERNAME_LENGTH+1];
DWORD nSize = MAX_COMPUTERNAME_LENGTH+1, nSize1 =
MAX_COMPUTERNAME_LENGTH+1;
GetComputerName(lpBuffer, &nSize);
GetUserName(lpBuffer1, &nSize1);
sprintf(str, "Имя компьютера:\x020%s\nИмя пользователя:\x020%s", lpBuffer, lpBuffer1);
MessageBox(NULL, str, "Имя компьютера и пользователя", MB_OK); return 0;
}
Пути к системным каталогам Windows;
#include <windows.h>
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
char lpBuffer[MAX_PATH]; char lpBuffer2[MAX_PATH]; char lpBuffer3[MAX_PATH];
GetWindowsDirectory(lpBuffer, MAX_PATH); GetSystemDirectory(lpBuffer2, MAX_PATH); GetTempPath(MAX_PATH, lpBuffer3); strcat(lpBuffer, "\n");
strcat(lpBuffer, lpBuffer2); strcat(lpBuffer, "\n");
strcat(lpBuffer, lpBuffer3);
MessageBox(NULL, lpBuffer, "Пути к системным каталогам Windows", MB_OK); return 0;
}
Версия операционной системы;
#include <windows.h> #include <stdio.h> char str[]="";
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
OSVERSIONINFO lpVI; lpVI.dwOSVersionInfoSize = sizeof(lpVI); lpVI.szCSDVersion[128]; GetVersionEx(&lpVI);
sprintf(str, "%d\x2e%d\x2e%d\n", lpVI.dwMajorVersion, lpVI.dwMinorVersion, lpVI.dwBuildNumber);
switch(lpVI.dwPlatformId)
{
case VER_PLATFORM_WIN32s:
strcat(str, "Win32s работающая на Windows 3.1\n"); break;
case VER_PLATFORM_WIN32_WINDOWS:
strcat(str, "Win32 работающая на Windows 95 или Windows 98\n"); break;
case VER_PLATFORM_WIN32_NT:
strcat(str, "Win32 работающая на Windows NT\n"); break;
}
strcat(str, lpVI.szCSDVersion);
MessageBox(NULL, str, "Версия операционной системы", MB_OK); return 0;
}
Системные метрики;
#include <windows.h> #include <stdio.h> char str[]="";
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
int metric = GetSystemMetrics(SM_CXSCREEN); int metric2 = GetSystemMetrics(SM_CYSCREEN);
sprintf(str, "Размеры экрана в пикселах\n%d x %d", metric, metric2); MessageBox(NULL, str, "Системные метрики", MB_OK);
return 0;
}
Системные параметры;
#include <windows.h> bool beeper, font;
int a;
char str[]="";
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
SystemParametersInfo(SPI_GETBEEP, 0, &beeper, 0); if(beeper == true)
{
strcat(str, "Звук включен\n");
}else{
strcat(str, "Звук отключен\n");
}
SystemParametersInfo(SPI_GETFONTSMOOTHING, 0, &font, 0); if(font == true)
{
strcat(str, "Сглаживание шрифтов включено\n");
}else{
strcat(str, "Сглаживание шрифтов отключено\n");
}
MessageBox(NULL, str, "Системные параметры", MB_OK); return 0;
}
Системные цвета;
#include <windows.h> #include <stdio.h>
int element[] = {COLOR_ACTIVECAPTION, COLOR_ACTIVEBORDER, COLOR_WINDOW, COLOR_WINDOWTEXT};
DWORD color[4]; char str[]="";
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
for(int i = 0; i < 4; i++)
{
color[i] = GetSysColor(element[i]);
}
sprintf(str, "Цвет фона окон Windows:\x020%x %x %x\nВы желаетете изменить цвет?", GetRValue(color[2]), GetGValue(color[2]), GetBValue(color[2]));
if(MessageBox(NULL, str, "Системные цвета", MB_YESNO) == IDYES)
{
color[2] = color[1]; SetSysColors(4, element, color);
}
return 0;
}
Функции для работы со временем;
#include <windows.h> #include <stdio.h> char str[]="";
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
SYSTEMTIME st;
GetLocalTime(&st);
sprintf(str, "Дата: %d-%d-%d\nДень недели: %d\nВремя: %d:%d:%d:%d", st.wDay, st.wMonth, st.wYear, st.wDayOfWeek, st.wHour, st.wMinute, st.wSecond, st.wMilliseconds);
MessageBox(NULL, str, "Функции для работы со временем", MB_OK); return 0;
}
Дополнительные API-функции:
#include <windows.h> #include <stdio.h> short key;
int nBuff, hour, min, sec; DWORD count;
bool locale; HKL lpList[16];
char s[]="", str[]="";
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
key = GetAsyncKeyState(VK_SHIFT);
nBuff = GetKeyboardLayoutList(16, &lpList[0]); count = GetTickCount();
locale = SetLocaleInfo(10, LOCALE_IDIGITS, "");
sprintf(str, "Код нажатой клавиши SHIFT: %d\nОписатели раскладки: %d размером
%d\nWindows работает: %d часов %d минут\nЛокаль: %d", key, lpList, nBuff, (count/1000)/3600, ((count/1000)/60)/((count/1000)/3600)-60, locale);
MessageBox(NULL, str, "Дополнительные API-функции", MB_OK); return 0;
}