Zadanie przekrojowe
Minimalizacja aplikacji do tray'a

- Opis działania:
- Program po uruchomieniu pokazuje okno zawierające dwie listy ikon:
- Lewa lista zawiera ikony i teksty głównych okien aplikacji uruchomionych w systemie
- Prawa lista zawiera ikony i teksty okien aplikacji zminimalizowanych do tray'a
- Dwuklik na ikonie z lewej listy powoduje minimalizację aplikacji do tray'a
- Dla każdej zminimalizowanej do tray'a aplikacji:
- Jej duża ikona (32x32) i tekst pojawiają się w prawej liście w oknie programu
- Jej mała ikona (16x16) pojawia się w tray'u. W menu kontekstowym dostępnym
po kliknięciu prawym przyciskiem myszy są dwie możliwości:
- "Pokaż" - pokazanie okna aplikacji
- "Zamknij" - zamknięcie okna aplikacji
- Zminimalizowane do tray'a okno jest ukrywane w systemie
- Dwuklik na ikonie z prawej listy powoduje pokazanie okna aplikacji
- Wskazówki:
- Win32: EnumWindows, ShowWindow, IsWindowVisible, SendMessageTimeout, GetWindowText, GetClassLong
- SW_HIDE (0), SW_SHOW (1), WM_CLOSE (0x0010)
- Algorytm (uproszczony) wyszukiwania głównych okien aplikacji:
- Wywołać funkcję EnumWindows podając jako pierwszy parametr funkcję (metodę), która będzie wołana
dla każdego znalezionego w systemie okna top-level
- Dla każdego znalezionego okna sprawdzić czy jest widoczne i czy ma przypisaną ikonę
- Algorytm (uproszczony) pobierania ikony okna:
- Za pomocą funkcji SendMessageTimeout z flagą SMTO_NORMAL (0) wysłać do okna komunikat
WM_GETICON (0x007F) (użyć parametru ICON_BIG (1) dla dużej ikony lub ICON_SMALL (0) dla małej)
- Jeśli nie udało sie pobrać ikony w powyższy sposób (otrzymano wartość NULL), to pobrać
ikonę klasy okna (wywołać GetClassLong z GCL_HICON (-14) dla dużej lub GCL_HICONSM (-34)
dla małej ikony)
- Linki do przesyłania (hasło jest takie samo, jak do wyników):