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

Лабораторная работа №1-1

.docx
Скачиваний:
29
Добавлен:
22.05.2021
Размер:
135.08 Кб
Скачать

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ КЫРГЫЗСКОЙ РЕСПУБЛИКИ

КЫРГЫЗСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ

УНИВЕРСИТЕТ ИМ. И. РАЗЗАКОВА

Лабораторная работа

Бишкек 2021

Лабораторная работа №1

Цель работы. Получение практических навыков по программированию в Win32 API с использованием аппаратных и системных функций. Ознакомиться с теоретическим материалом.

Вариант №9

Листинг кода:

// Объявление API-функции.

[DllImport("winmm.dll", EntryPoint = "sndPlaySound")]

public static extern long PlaySound(string fileName, long flags);

//Определение имени ПК

[DllImport("kernel32.dll")]

static extern unsafe bool GetComputerName(byte* lpBuffer, long* nSize);

//Определение имени пользователя

[DllImport("advapi32.dll", SetLastError = true)]

static extern bool GetUserName(System.Text.StringBuilder sb, ref Int32 length);

//Определение системной директории

[DllImport("kernel32.dll")]

static extern GraphicsUnit GetSystemDirectory([Out] StringBuilder lpBuffer, uint uSize);

// Определение версии ОС

[DllImport("kernel32.dll")]

static extern bool GetVersionEx(ref OSVERSIONINFO osvi);

//Определение метрики ПК

[DllImport("user32.dll")]

static extern int GetSystemMetrics(SystemMetric smIndex);

//Системные настройки

[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]

[return: MarshalAs(UnmanagedType.Bool)]

static extern bool SystemParametersInfo(uint uiAction, uint uiParam, StringBuilder pvParam, uint fWinIni);

[DllImport("user32.dll", SetLastError = true)]

[return: MarshalAs(UnmanagedType.Bool)]

static extern bool SystemParametersInfo(uint uiAction, uint uiParam, ref uint pvParam, uint fWinIni);

//Системные цвета

[DllImport("user32.dll")]

static extern uint GetSysColor(int nIndex);

//Системная дата

[DllImport("kernel32.dll")]

static extern void GetSystemTime(out SYSTEMTIME lpSystemTime);

//Цвет рабочего стола

[DllImport("user32.dll")]

static extern bool SetSysColors(int cElements, int[] lpaElements, int[] lpaRgbValues);

private unsafe void button1_Click(object sender, EventArgs e)

{

//определение имени ПК

byte[] buffor = new byte[512];

long sizeNameComputer = buffor.Length;

long* pSize = &sizeNameComputer;

fixed (byte* pBuffor = buffor)

{

GetComputerName(pBuffor, pSize);

}

System.Text.Encoding textEnc = new System.Text.ASCIIEncoding();

label1.Text = "Имя ПК: " + textEnc.GetString(buffor);

//Определение имени пользователя

StringBuilder BufferUserName = new StringBuilder(512);

int sizeUserName = 512;

GetUserName(BufferUserName, ref sizeUserName);

label2.Text = "Имя пользователя: " + BufferUserName;

//Определение системной директории

StringBuilder sbSystemDir = new StringBuilder(256);

uint sizePathSystemDir = 256;

GetSystemDirectory(sbSystemDir, sizePathSystemDir);

label3.Text = "Системная директория: " + sbSystemDir;

//Определение версии ОС

OSVERSIONINFO osVersionInfo = new OSVERSIONINFO();

osVersionInfo.dwOSVersionInfoSize = (uint)Marshal.SizeOf(osVersionInfo);

GetVersionEx(ref osVersionInfo);

label4.Text = "Версия ОС: " + osVersionInfo.dwBuildNumber;

//Определение метрики ПК

switch (GetSystemMetrics(SystemMetric.SM_CLEANBOOT))

{

case 0:

label5.Text = "Тип загрузки: " + "Normal boot";

break;

case 1:

label5.Text = "Тип загрузки: " + "Fail safe boot";

break;

case 2:

label5.Text = "Тип загрузки: " + "Fail safe boot with networking";

break;

}

//Разрешение экрана

label6.Text = "Разрешение монитора: " + GetSystemMetrics(SystemMetric.SM_CXSCREEN)

+ "x" + GetSystemMetrics(SystemMetric.SM_CYSCREEN);

//Системные настройки

StringBuilder pathWallpaper = new StringBuilder(1024);

const uint SPI_GETDESKWALLPAPER = 0x0073;

SystemParametersInfo(SPI_GETDESKWALLPAPER, 1024, pathWallpaper, 0);

label7.Text = "Путь к картинке для рабочего стола: " + pathWallpaper;

//Контрастность

const uint SPI_GETFONTSMOOTHINGCONTRAST = 0x200C;

uint contrast = 0;

SystemParametersInfo(SPI_GETFONTSMOOTHINGCONTRAST, 0, ref contrast, 0);

label8.Text = "Контрастность: " + contrast;

//Системные цвета

const int COLOR_3DSHADOW = 1;

int color1 = Convert.ToInt32(GetSysColor(COLOR_3DSHADOW));

Color color = Color.FromArgb(color1 & 0xFF, (color1 & 0xFF) >> 8, (color1 & 0xFF0000) >> 16);

label9.Text = "Цвет рабочего стола: " + "R = " + color.R + ", G = " + color.G + " , B = " + color.B;

//Узнаем время

SYSTEMTIME myTime;

GetSystemTime(out myTime);

label10.Text = "Дата: " + myTime.Day + "/" + myTime.Month + "/" + myTime.Year;

}

private void Form1_Load(object sender, EventArgs e)

{

// Проигрывание звука.

(new System.Media.SoundPlayer(@"C:\Users\LANVIN\source\repos\API_function\API_function\Resources\song.wav")).PlayLooping();

}

private void button2_Click(object sender, EventArgs e)

{

//Меняем цвет фона рабочего стола

const int COLOR_DESKTOP = 1;

Color inColor = Color.FromArgb(Convert.ToInt32(textBox1.Text), Convert.ToInt32(textBox2.Text), Convert.ToInt32(textBox3.Text));

int[] elements = { COLOR_DESKTOP };

int[] colors = { System.Drawing.ColorTranslator.ToWin32(inColor) };

SetSysColors(elements.Length, elements, colors);

}

}

}

Фото: