BIBLIOTEKA: ext_console.dll
ZASTOSOWANIE: biblioteka służy do obsługi niektórych aspektów konsoli Win32. Oferuje rozwiązania dla – między innymi – zmiany wyglądu (czy obecności) kursora, zmiany wielkości okienka, kolorów tekstu oraz obsługi zdarzeń okna konsolowego.
WERSJA: 0.2
DOWNLOAD:
ext_console.zip (4.1 KiB).
Prototypy:
array GetEvent ( void );
bool ResizeConsole ( int Width, int Height );
bool GotoXY ( int X, int Y );
bool TextColor ( [ int TextColor, [ int BackgroundColor ] ] );
bool ClearConsole ( int StartX, int StartY, int Length );
bool FullScreen ( int FullscreenEnable );
bool CursorInfo ( int CursorEnable, int CursorSize );
int MessageBox ( string MessageCaption, string Message,
int Flags );
bool StartProcess ( string executablePath, string Parameters,
string WorkingDirectory );
No, to po kolei:
array GetEvent ();
Funkcja sprawdza, czy wystąpiło wydarzenie – i jeśli tak, zwraca je w postaci tablicy. Najczęściej tablica będzie mieć podstawową postać ['TYPE'] => typ zdarzenia, ['EVT_DESC'] => dodatkowe informacje n/t zdarzenia.
TYPE: typy wydarzeń MOUSE_EVT, BUFFER_EVT, KEY_EVT, FOCUS_EVT, MENU_EVT
EVT_DESC to tablica o parametrach właściwych danemu zdarzeniu (dla myszy będą to koordynaty i ew. przyciśnięty przycisk, dla klawiatury – kod klawisza etc.).
bool ResizeConsole ( int Width, int Height );
Konsola jest liczona w/g miejsc na znaki — kolumn i rzędów. Zdaje się, że maksymalna szerokość konsoli to 80 rzędów – można tę wartość przekroczyć tylko poprzez ręczną zmianę wielkości konsoli, niestety. Wysokość – b/o. Wraz ze zmianą wielkości konsoli zmieniana jest wielkość bufora tekstowego (dlatego nie ma paska przewijania). Oczywiście, zawsze można napisać więcej tekstu niż bufor by przechował — wtedy zostanie on automatycznie zwiększony bez naszej ingerencji (system się o to zatroszczy). Jak większość funkcji z tej biblioteki, zwraca TRUE przy sukcesie i FALSE przy porażce.
bool GotoXY ( int X, int Y );
Tutaj nie ma co się rozwodzić wielce nad funkcją — robi dokładnie to samo, co jej siostra w C/Pascalu.
bool TextColor ( [ int TextColor, [ int BackgroundColor ] ] );
Z tą funkcją jest już trudniej. Oba parametry są absolutnie opcjonalne (oczywiście przy zachowaniu kolejności, wiadomo). Oba parametry mają domyślnie 0, choć dla obu znaczy to coś innego. Dobór wartości:
0 – domyślny (dla tekstu – ciemny biały, dla tła – czarny)
1 – red
2 – green
3 – blue
4 – cyan
5 – magenta
6 – yellow
7 – intensywny biały (dla obu)
8 – odwrócenie domyślnych kolorów (0 zamienione miejscami)
Wywołanie funkcji bez parametrów spowoduje przywrócenie domyślnych ustawień (czyli 0). Należy przy tym zauważyć, że nie u każdego takie kolory konsoli są domyślne. Należy brać to pod uwagę – biblioteka nie sprawdza domyślnych kolorów.
bool ClearConsole ( int StartX, int StartY, int Length );
Służy do wyczyszczenia prostego paska konsoli, a uzyskuje to poprzez nadpisanie tego miejsca znakiem spacji (' '). Podajesz miejsce zaczepienia/startu (X, Y) oraz ilość znaków/długość czyszczenia.
bool FullScreen ( int FullscreenEnable );
Znów prościutka w swym działaniu funkcyjka — pozwala w dowolnym miejscu włączyć lub wyłączyć tryb pełnoekranowy (czyli ALT+ENTER).
bool CursorInfo ( int CursorEnable, int CursorSize );
Funkcja pozwala na włączenie/wyłączenie wyświetlania kursora, oraz na określenie jego wielkości (od 1 do 100).
Następne dwie funkcje nie powinny się tu znaleźć, ale wrzuciłem tutaj, aby nie tworzyć dla nich osobnej biblioteki. Kiedy zbiorę więcej im podobnych funkcji, prawdopodobnie przeniosę je do biblioteki ext_sysio.dll.
int MessageBox ( string MessageCaption, string Message,
int Flags );
Zasadniczo jest to tylko interfejs do systemowego wywołania int MessageBox(HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT uType). Dla hWnd wstawiany jest NULL. Reszta parametrów jest dokładnie identyczna, więc wypadałoby poczytać nt. wartości schowanych za MB_OK, MB_OKCANCEL etc. etc. W przyszłych inkarnacjach prawdopodobnie będę definiował odpowiednie stałe dla php–userspace, ale na razie trzeba je sobie zdefiniować ręcznie.
bool StartProcess ( string executablePath, string Parameters,
string WorkingDirectory );
Tej funkcji użyłem do dnia dzisiejszego tylko raz. Zasadniczo jest interfejsem dla Windowsowego CreateProcess(). Propaguje zezwolenia i uprawnienia do procesu potomnego. Przydatne głównie dlatego, że PHP w wersji Windows nie można pcntl_fork()'ować. :–)
DOWNLOAD:
ext_console.zip (4.1 KiB).