Konsola i informacje o systemie

Zadanie 1

Napisz program wyświetlający terminal (konsolę), w którym wyświetlone zostaną następujące informacje.

ilość procesorów

rozdzielczość ekranu

nazwę komputera DNS oraz NetBIOS

ilość wykorzystanej pamięci w procentach

Ustaw wybraną przez siebie wielkość okna konsoli, tytuł okna, rozmiar czcionki oraz kolory tła i tekstu.

Przydatne funkcje API

Funkcje konsoli

AllocConsole, FreeConsole
tworzenie konsoli / zwalnianie konsoli

GetStdHandle
uchwyt do standardowego wejścia i wyjścia (STD_OUTPUT_HANDLE)

WriteConsole, ReadConsole
pisanie/czytanie

SetConsoleTextAttribute
ustala cechy tekstu wyświetlanego na konsoli (np. kolor tła)

Informacje o systemie

GetComputerNameEx
pobiera nazwę DNS i NetBIOS komputera

GetSystemMetric
pobiera różnorodne istawienia konfiguracji komputera, m.in. rozmiary ekranu

GlobalMemoryStatusEx
informacje o zajętości pamięci fizycznej i wirtualnej

Operacje na napisach

lstrlen lub _tcslen
wyznacza długość napisu

_sntprintf_s
formatowanie napisu za pomocą składni zgodną z printf

_itot
zamiana liczby całkowitej na napis

Zadanie 2

Napisz program wyświetlający terminal (konsolę) reagujący na wpisywane komendy. Konsola obsługujące następujące polecenia:

quit zamyka terminal

help wypisuje listę dostępnych poleceń

info wypisuje takie informacje o systemie jak: nazwa komputera, rozdzielczość, katalog bieżący

mem wyświetla informacje o pamięci: zajętość w procentach, ilość wolnej i całkowitej pamięci fizycznej w GB, ilość wolnej i całkowitej pamięci wirtualnej w GB, rozmiar pliku stronicowego (page file)

cls czyści ekran

notatnik uruchamia program notepad.exe

logout wylogowuje użytkownika

Konsola powinna reagować na wciśnięcie Ctrl+C wyświetleniem komunikatu „Nie wciskaj Ctrl+C. Nic to nie da.”

Przydatne funkcje API

SetConsoleMode
ustawienie trybu działania strumieni, m.in. ENABLE_LINE_INPUT

ReadConsole
odczyt znaków z konsoli

GetConsoleScreenBufferInfo
pobranie informacji i buforze konsoli, m.in. położenie kursora

SetConsoleCursorPosition
ustawienie pozycji kursora

FillConsoleOutputCharacter, FillConsoleOutputAttribute
wypełnienie zawartości bufora znakami/atrybutami

lstrcmp lub _tcscmp
porównanie napisów

CreateProcess
uruchamianie procesu

Zadanie 3

Napisz program, który w konsoli wyświetla na bieżąco zajętość pamięci fizycznej i wirtualnej, ilość działających procesów. Zajętość wizualizowana jest za pomocą kolorowych pasków (np. kolor czerwony oznacza znaczne wypełnienie pamięci), podobnie do wyniki działania linuksowego polecenia htop

Zadanie 4

Korzystając w funkcji API systemu windows napisz konsolową grę Snake.