Зміна плану живлення ПК

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
КН
Кафедра:
Кафедра електронні обчислювальні машини

Інформація про роботу

Рік:
2024
Тип роботи:
Лабораторна робота
Предмет:
Системне програмне забезпечення

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ Національний університет «Львівська політехніка» Кафедра «Електронні обчислювальні машини» / Лабораторна робота № 7 З дисципліни: «Системне програмне забезпечення» Тема: «Зміна плану живлення ПК » Мета : Розробити програму яка зможе змінювати план живлення ПК. Теоретична частина Параметри живлення в Windows базуються на планах живлення. План живлення — це набір настройок устаткування та системи, який керує використанням електроенергії комп’ютером. Плани живлення використовуються для збереження енергії, максимізації продуктивності системи або дотримання балансу між тим і іншим. Три плани живлення за промовчанням — «Баланс», «Економія енергії» та «Висока продуктивність» — відповідають потребам більшості користувачів. Параметри кожного з цих планів можна змінити або, якщо ці плани не задовольняють ваші потреби, можна створити власний план, взявши за основу один із наявних планів. У нижченаведеній таблиці описано кожен із планів за промовчанням. / Керування параметрами живлення Керувати параметрами всіх планів живлення можна за допомогою вікна Параметри живлення із панелі керування. Можна додатково оптимізувати споживання енергії комп’ютером і продуктивність системи, змінивши додаткові параметри живлення. Незважаючи на кількість змін, можна завжди відновити значення параметрів за промовчанням. Завдання: Розробити програму яка зможе змінювати план живлення ПК. Для виконання цього задання була написана сама програма для виводу інформації про стан батареї на мові С# і DLL бібліотека з описом функцій які також будуть використовуватись при виконані наступних лабораторних з курсу СПЗ. Код DLL бібліотеки з описом функцій. #include "brightness.h" #include "gammaramp.h" extern "C" __declspec(dllexport) char * GetPowerStatus() { SYSTEM_POWER_STATUS sps; if (GetSystemPowerStatus(&sps)) { switch (sps.ACLineStatus) // печатаем статус питания { case 0: return "Відключено"; case 1: return "Підключено"; case 255: default: return "Невідомо"; break; } } return "Unknown"; } extern "C" __declspec(dllexport) char * GetBatteryFlag() { SYSTEM_POWER_STATUS sps; GetSystemPowerStatus(&sps); switch (sps.BatteryFlag) // статус заряда { case 1: return "Високий"; case 2: return "Низький"; case 4: return "Критичний"; case 8: return "Заряджається"; case 128: return "Батарея відсутня"; case 255: default: return "Невідомий"; } } extern "C" __declspec(dllexport) int GetBatteryPercent() { SYSTEM_POWER_STATUS sps; GetSystemPowerStatus(&sps); return (int)sps.BatteryLifePercent; } extern "C" __declspec(dllexport) int GetBatteryTime() { SYSTEM_POWER_STATUS sps; GetSystemPowerStatus(&sps); return sps.BatteryLifeTime; } extern "C" __declspec(dllexport) int GetFullBatteryTime() { SYSTEM_POWER_STATUS sps; GetSystemPowerStatus(&sps); return sps.BatteryFullLifeTime; } Код програми using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using Brightness; using System.Windows.Forms; using System.Runtime.InteropServices; using Microsoft.Win32; using System.Collections; using System.Security; using System.Security.AccessControl; using System.Security.Permissions; using System.Diagnostics; namespace Brightness { public partial class Form1 : Form { public Form1() { InitializeComponent(); } [DllImport("brightness_dll.dll", CharSet=CharSet.Ansi)] public static extern string GetPowerStatus(); [DllImport("brightness_dll.dll", CharSet = CharSet.Ansi)] public static extern string GetBatteryFlag(); [DllImport("brightness_dll.dll", CharSet = CharSet.Ansi)] public static extern int GetBatteryPercent(); [DllImport("brightness_dll.dll", CharSet = CharSet.Ansi)] public static extern int GetBatteryTime(); [DllImport("brightness_dll.dll", CharSet = CharSet.Ansi)] public static extern int GetFullBatteryTime(); [DllImport("brightness_dll.dll", CharSet = CharSet.Ansi)] public static extern void SetBrightness(int Brightness); Hashtable pow = new Hashtable(); string Active; private void GetPowers() { RegistryKey Key = Registry.LocalMachine.OpenSubKey(@"SYSTEM\CurrentControlSet\Control\Power\User\PowerSchemes"); string[] powers = Key.GetSubKeyNames(); Active = (string)Key.GetValue("ActivePowerScheme"); string Shema; foreach (string str in powers) { Key = Registry.LocalMachine.OpenSubKey(@"SYSTEM\CurrentControlSet\Control\Power\User\PowerSchemes\" + str); Shema = (string)Key.GetValue("FriendlyName"); try { Shema = Shema.Remove(0, Shema.LastIndexOf(",") + 1); } catch { } pow.Add(Shema, str); } } private void Create_radio() { RadioButton[] rb = { radioButton1, radioButton2, radioButton3 }; int i = 0; foreach (DictionaryEntry de in pow) { rb[i].Visible = true; rb[i].Text = (string)de.Key; if (Active == de.Value.ToString()) { rb[i].Checked = true; } i++; } for (int j = 0; j < i - 1; j++) { int h = this.Height + 23; this.Size = new Size(this.Width, h); groupBox3.Height = groupBox3.Height + 23; } } private void Form1_Load(object sender, EventArgs e) { GetPowers(); Create_radio(); } private void radioButton3_CheckedChanged(object sender, EventArgs e) { ChangePow(radioButton3); } private void radioButton2_CheckedChanged(object sender, EventArgs e) { ChangePow(radioButton2); } private void radioButton1_CheckedChanged(object sender, EventArgs e) { ChangePow(radioButton1); } private void ChangePow(RadioButton rb) { Active = (string)pow[rb.Text]; ProcessStartInfo prc = new ProcessStartInfo("Powercfg", "-setactive " + Active); prc.WindowStyle = ProcessWindowStyle.Hidden; Process.Start(prc); } } } Результат виконання Збалансований режим Режим збереження енергії Висновок: Я розробив програму яка змінює план живлення ПК.
Антиботан аватар за замовчуванням

06.12.2014 17:12-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!