Konsola i informacje o systemie

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
  • 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
    ilość znaków w napisie
  • _snwprintf_s
    formatowanie napisu za pomocą składni zgodną z printf
  • _itow
    zamiana liczby całkowitej na napis

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
    porównanie napisów
  • CreateProcess
    uruchamianie procesu

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

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