Strona główna » Kursy » Kurs C++ » Konsola Windows i C++
 

Konsola Windows i C++

Wstęp

Prosty program można napisać bardzo szybko. Wystarczy wpisać odpowiedni kod, pewien algorytm do wykonania, a wyniki można wypisać bezpośrednio na konsolę. Jak jednak wiadomo w celu komunikacji z użytkownikem wykorzystywana jest konsola Windows, a to oznacza, że do systemu można wysyłać pewne polecenia poprzez API systemu Windows.

Teoria

W bibliotece cstdlib istnieje polecenie system(), które przyjmuje tylko jeden argument command, który jest wskaźnikiem na pewną tablicę znaków. Przesyłanymi poleceniami mogą być wszystkie polecenia dostępne w Systemowej Linii Poleceń (CMD).

Przykłady

Wstrzymanie wykonywania

Jedną z najbardziej irytujących rzeczy jaką potrafi dokonać program to wykonać szybko obliczenia, wypisać je i zamknąć się zanim cokolwiek można było odczytać. W takiej sytuacji należy wstrzymać wykonywanie programu przed zwróceniem statusu wykonania programu. Można znaleźć różne sposoby np. wczytując wciśnięcie klawisza, pętle i wiele innych, ale zdecydowanie najskuteczniejsze jest polecenie "pause". Po wywołaniu:

  1.   system("pause");

program wstrzymuje pracę i wyświetla komunikat:

  1. Press any key to continue . . .

Po wciśnięciu dowolnego przycisku program jest wykonywany dalej.

Czyszczenie konsoli

Najprostszym sposobem na wyczyszczenie konsoli jest wypisywania tak dużo znaków nowej linii, że te zbędne zostaną zapomniane. Istnieje prostsze rozwiązanie z pewnością znane osobom, które coś pracowały w konsoli. Polecenie brzmi "cls" i jego zadanie polega na usunięciu wszelkiego bufora i ustawieniu kursora w lewym górnym rogu. Innymi słowy czyszczenie ekranu można wykonać następująco:

  1.   system("cls");

Data

W celu odczytania daty należy odczytać ile ms minęło od 1970 roku następnie skonwertować to i chociaż istnieją już gotowe funkcje to nie zawsze programista ma odpowiednio dużo czasu, aby się dodatkowo w to zagłębiać. Rozwiązaniem może być wypisanie daty poprzez polecenie z konsoli "date". Jednak to polecenie po wyświetleniu będzie chciało, aby wprowadzić nową datę. Można tego uniknąć wpisując "date \t". Wtedy wyświetlona zostanie jedynie data.

  1.   system("date /t");

Wynikiem tego będzie przykładowo:

  1. 28.06.2017

Czas

Analogicznie do daty można wypisać czas systemu przy użyciu polecenia "time \t", gdzie przełącznik "\t" wyłącza wprowadzanie nowego czasu po wyświetleniu.

  1.   system("time /t");

Wynikiem tego będzie przykładowo:

  1. 19:19

Eksplorator plików

Do wypisywania zawartości folderu można wykorzystać polecenie "dir", które posiada różnego rodzaju przełączniki w zależności od tego co jest potrzebne użytkownikowi.

  1.   system("dir");

Wynikiem tego będzie przykładowo:

  1.  Volume in drive D has no label.
  2.  
  3.  Directory of D:\Test
  4.  
  5. 28.06.2017 19:00   <DIR>        .
  6. 28.06.2017 19:00   <DIR>        ..
  7. 28.06.2017 19:00         47 616 Test.exe
  8.          1 File(s)         47 616 bytes

Dokładniej o dostępnych trybach wypisywania można przeczytać wpisując polecenie "dir /?" bezpośrednio w programie lub uruchamiając instancję Systemowej Linii Poleceń.

Zadania

Zadanie 1

Napisz program, który będzie wczytywał od użytkownika polecenie, a następnie będzie przekazywał do systemu. Program powinien pytać o kolejne polecenia w pętli, aż użytkownik nie wpisze pustego polecenia. Zadbaj o to, aby użytkownik widział tylko bieżący wynik polecenia na ekranie (tj. ekran ma być czyszczony po każdowym wczytaniu polecenia).