Добавил:
piter-i.narod.ru Программист ПЛИС Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

os1

.pdf
Скачиваний:
8
Добавлен:
24.06.2018
Размер:
111.03 Кб
Скачать

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

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

высшего профессионального образования

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

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

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

Лабораторная работа № 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;

}

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