====== 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 ** [[https://msdn.microsoft.com/en-us/library/windows/desktop/ms682073%28v=vs.85%29.aspx|Funkcje konsoli]] * **[[https://msdn.microsoft.com/en-us/library/windows/desktop/ms681944(v=vs.85).aspx|AllocConsole]]**, **[[https://msdn.microsoft.com/en-us/library/windows/desktop/ms683150(v=vs.85).aspx|FreeConsole]]** \\ tworzenie konsoli / zwalnianie konsoli * **[[https://msdn.microsoft.com/en-us/library/windows/desktop/ms683231(v=vs.85).aspx|GetStdHandle]]** \\ uchwyt do standardowego wejścia i wyjścia (STD_OUTPUT_HANDLE) * **[[https://msdn.microsoft.com/en-us/library/windows/desktop/ms687401(v=vs.85).aspx|WriteConsole]]**, **[[https://msdn.microsoft.com/en-us/library/windows/desktop/ms684958(v=vs.85).aspx|ReadConsole]]** \\ pisanie/czytanie * **[[https://msdn.microsoft.com/en-us/library/windows/desktop/ms686047(v=vs.85).aspx|SetConsoleTextAttribute]]** \\ ustala cechy tekstu wyświetlanego na konsoli (np. kolor tła) [[https://msdn.microsoft.com/en-us/library/windows/desktop/ms724953%28v=vs.85%29.aspx|Informacje o systemie]] * **[[https://msdn.microsoft.com/en-us/library/windows/desktop/ms686047(v=vs.85).aspx|GetComputerNameEx]]** \\ pobiera nazwę DNS i NetBIOS komputera * **[[https://msdn.microsoft.com/en-us/library/windows/desktop/ms724385%28v=vs.85%29.aspx|GetSystemMetric]]** \\ pobiera różnorodne istawienia konfiguracji komputera, m.in. rozmiary ekranu * **[[https://msdn.microsoft.com/en-us/library/windows/desktop/aa366589%28v=vs.85%29.aspx|GlobalMemoryStatusEx]]** \\ informacje o zajętości pamięci fizycznej i wirtualnej **Operacje na napisach** * **[[https://msdn.microsoft.com/en-us/library/windows/desktop/ms647492(v=vs.85).aspx|lstrlen]]** lub **[[https://msdn.microsoft.com/en-us/library/78zh94ax.aspx|_tcslen]]** \\ wyznacza długość napisu * **[[https://msdn.microsoft.com/en-us/library/f30dzcf6.aspx|_sntprintf_s]]** \\ formatowanie napisu za pomocą składni zgodną z ''printf'' * **[[https://msdn.microsoft.com/en-us/library/ms860529.aspx|_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 ** * **[[https://msdn.microsoft.com/en-us/library/windows/desktop/ms686033(v=vs.85).aspx|SetConsoleMode]]** \\ ustawienie trybu działania strumieni, m.in. ''ENABLE_LINE_INPUT'' * **[[https://msdn.microsoft.com/en-us/library/windows/desktop/ms684958(v=vs.85).aspx|ReadConsole]]** \\ odczyt znaków z konsoli * **[[https://msdn.microsoft.com/en-us/library/windows/desktop/ms683171(v=vs.85).aspx|GetConsoleScreenBufferInfo]]** \\ pobranie informacji i buforze konsoli, m.in. położenie kursora * **[[https://msdn.microsoft.com/en-us/library/windows/desktop/ms686025(v=vs.85).aspx|SetConsoleCursorPosition]]** \\ ustawienie pozycji kursora * **[[https://social.msdn.microsoft.com/search/en-US/windows?query=setconsolecursorposition&refinement=183|FillConsoleOutputCharacter]]**, **FillConsoleOutputAttribute** \\ wypełnienie zawartości bufora znakami/atrybutami * **[[https://msdn.microsoft.com/en-us/library/windows/desktop/ms647488(v=vs.85).aspx|lstrcmp]]** lub **[[https://msdn.microsoft.com/en-us/library/e0z9k731.aspx|_tcscmp]]**\\ porównanie napisów * **[[https://msdn.microsoft.com/en-us/library/windows/desktop/ms682425%28v=vs.85%29.aspx|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'' {{ zajecia:winprog_2015_1:htop_sample.png?500 }} ===== Zadanie 4 ===== Korzystając w funkcji API systemu windows napisz konsolową grę Snake.