Wyświetleń
447,097
04:40:35
26.06.2017 (Monday)

WinInfo 1.0.3

Analiza okien, odkrywanie haseł za gwiazdkami, wysyłanie komunikatów systemowych.

Program umożliwia szczegółową analizę wszystkich okien uruchomionych w systemie Windows, wysyłanie komunikatów systemowych do dowolnego okna oraz zmianę niektórych parametrów okien (pokazanie, ukrycie, zmiana położenia, rozmiarów itp.).
Dodatkową funkcją programu jest odkrywanie haseł znajdujących się za gwiazdkami.
WinInfo
Data wydania:
25.09.2003
Język:
angielski
Licencja:
Freeware
System:
NT/98/Me/2000/XP/2003/Vista
Pobrań:
166,341
Wstęp
Screenshots
Windows i windows
Hierarchia okien - Top windows, owner windows, parent windows, child windows
Parametry okien
Wysyłanie komunikatów systemowych
Odkrywanie haseł ukrytych za gwiazdkami
Linki

Wstęp

WinInfo jest programem do szczegółowej analizy okien istniejących w systemie Windows utworzonych przez uruchomione aplikacje lub sam system operacyjny.

Program umożliwia uzyskanie szczegółowych informacji dotyczących dowolnego okna, zmianę wielu parametrów okien (tekst, położenie, ukrycie, pokazanie itd.), wysyłanie komunikatów systemowych do okien itd. Dodatkową funkcją jest odkrywanie haseł ukrytych za gwiazdkami.

Najważniejsze funkcje

  • Wyświetlanie listy wszystkich okien nadrzędnych (Top Windows) oraz listy okien potomnych (Child Windows) utworzonych przez wybrane okno.
  • Wyświetlanie listy uruchomionych procesów oraz listy wątków utworzonych przez wybrany proces.
  • Wyświetlanie listy okien utworzonych przez dany proces lub wątek.
  • Wysyłanie komunikatów systemowych do okien.
  • Wyświetlanie szczegółowych informacji o wybranym oknie (uchwyt, klasa, tekst, położenie, rozmiar...).
  • Możliwość włączenia/wyłączenia, ukrycia/pokazania, zmiany położenia i rozmiaru, ustawienia tekstu danego okna.
  • Tryb "przechwytywania". Aby uzyskać informacje o oknie widocznym na ekranie, wystarczy wskazać je myszką i nacisnąć klawisz F5.
  • Możliwość zapisania wyświetlanych informacji do pliku HTML lub pliku tekstowego.
  • Odkrywanie zagwiazdkowanych haseł. Aby odkryć hasło, należy zaznaczyć myszką "zagwiazdkowany" tekst. Po zaznaczeniu, zamiast gwiazdek powinno być widoczne hasło.
Dalej--->

Zrzuty ekranu

Okno główne
Top Windows Child Windows
Szczegóły Wysyłanie komunikatów
Lista procesów Okna utworzone przez wybrany wątek
Opcje

Windows i windows


System Windows nazywa się tak nie bez powodu (Windows = Okna). Większość elementów widocznych na ekranie monitora w trakcie normalnej pracy w tym systemie to okna. Przyciski, pola edycyjne, paski przewijania, listy rozwijalne i statyczne, a nawet niektóre napisy są w rzeczywistości oknami. Okna "tradycyjne" - prostokątne elementy, zawierające obramowanie, pasek tytułowy, posiadające w prawym-górnym rogu przyciski: Zamknij, Maksymalizuj/Przywróć i Minimalizuj, stanowią z reguły tylko niewielką część spośród wszystkich istniejących.

Hierarchia okien
Top windows, owner windows, parent windows, child windows

Przy tworzeniu każdego nowego okna można określić jego okno nadrzędne - tzw. okno rodzica (parent window). Nowe okno staje się wówczas oknem potomnym (child window). Tak powiązane ze sobą okna łączą pewne zależności:

  • okno potomne znajduje się zawsze nad oknem rodzica;
  • przy próbie przesunięcia okna potomnego poza obszar roboczy okna rodzica, nastąpi jego obcięcie;
  • położenie okna podrzędnego jest określane względem lewego-górnego rogu obszaru roboczego okna rodzica;
  • ukrycie lub zminimalizowanie okna rodzica powoduje automatyczne ukrycie wszystkich jego okien potomnych;
  • zniszczenie okna rodzica (zwolnienie pamięci zajmowanej przez to okno) powoduje automatyczne zniszczenie wszystkich jego okien potomnych.

Okna mogą tworzyć nowe okna. Same też mogą być utworzone przez inne.
Okno tworzące nazywa się wtedy owner window (okno właściciela), okno zakładane - owned window (okno założone). Owned windows są zawsze widoczne nad oknem właściciela, są ukrywane, gdy okno właściciela jest ukrywane/minimalizowane, oraz niszczone, gdy niszczone jest okno właściciela. Natomiast ich położenie jest określane względem lewego-górnego rogu ekranu, nie są one także obcinane przy przesunięciu poza obszar roboczy właściciela.

Okno nie posiadające rodzica, lub którego rodzicem jest pulpit, określane jest jako top window lub top-level window.

Typowa aplikacja okienkowa tworzy przy starcie co najmniej jedno okno główne, które jest podstawą interfejsu służącego do wymiany informacji między użytkownikiem a aplikacją. Większość programów tworzy także dodatkowe okna, z których część (lub wszystkie) są oknami podrzędnymi (potomnymi lub założonymi) w stosunku do już istniejących. Te nowe okna mogą zostać rodzicami/właścicielami kolejnych okien. W ten sposób tworzy się hierarchia, wzajemnie od siebie zależnych okien, która może być bardzo złożona.

Windows jest systemem wielowątkowym. Oznacza to, że jednocześnie może być w nim uruchomionych wiele aplikacji, a biorąc pod uwagę, że większość z nich tworzy od kilku do kilkudziesięciu okien (niekiedy nawet kilkaset), łatwo się zagubić w "gąszczu okien". Tutaj z pomocą przychodzi program WinInfo, który m.in. umożliwia odtworzenie hierarchii okien utworzonych przez dowolną aplikację.

Parametry okien

Z każdym oknem związanych jest cały szereg parametrów, atrybutów. Cześć z nich jest ustalana przez system operacyjny, a część przez samego programistę. Do najważniejszych parametrów można tutaj zaliczyć:

  • Identyfikator okna (window handle), najczęściej zwany uchwytem okna.
    Liczba 32-bitowa bez znaku (DWORD).
    Przyznawany jest automatycznie przez system operacyjny w momencie tworzenia okna. Windows utrzymuje globalną listę takich identyfikatorów i w momencie tworzenia nowego okna, przydziela mu identyfikator nie występujący na tej liście. Gdy okno jest niszczone, jego identyfikator staje się nieważny i może zostać przydzielony do jednego z nowopowstałych okien. Dzięki temu, w tym samym momencie nie może istnieć dwóch lub więcej okien z takim samym identyfikatorem. Natomiast może się zdarzyć, że identyfikator danego okna będzie po pewnym czasie wskazywać już zupełnie inne okno (gdy stare okno zostanie zniszczone, a jego identyfikator otrzyma jedno z nowopowstałych).
    Większość funkcji systemowych operujących na oknach wymaga jako pierwszego parametru właśnie tego identyfikatora.
  • Klasa okna (window class).
    Każde okno należy do pewnej klasy okien, która musi być zarejestrowana w systemie przed utworzeniem samego okna. Klasa określa niektóre aspekty związane z wyglądem i zachowaniem okna. M.in. określa jaki będzie kolor i styl tła okna, definiuje kursor używany wewątrz okna, ustala menu, ikonę itp. (zobacz szczegóły).
    Każda klasa identyfikowana jest po nazwie (class name).
    W Windows istnieje szereg klas predefiniowanych. Np. klasa o nazwie Button definiująca przyciski, klasa ComboBox - listy rozwijalne, Edit - pola edycyjne. Klasy, których nazwa rozpoczyna się od dużej litery T, takie jak TApplication, TForm1, TButton, TPanel itd., to w zasadzie znak charakterystyczny dla kompilatorów Borlanda. Jeżeli nazwy klas okien rozpoczynają się od łańcucha Afx, możemy być prawie pewni, że aplikacja taka została napisana w Visual Studio Microsoftu.
  • Nazwa okna (window name lub window text).
    Nazwa ta jest łańcuchem tekstowym ułatwiającym rozpoznanie okna przez użytkownika. Niektóre okna wyświetlają nazwę na pasku tytułowym, inne wewnątrz zajmowanego przez nie obszaru (np. napisy na przyciskach, tekst w polu edycyjnym), jeszcze inne w ogóle nie wyświetlają swojej nazwy (np. listy rozwijalne).
  • Styl okna (window style).
    Z każdym oknem związany jest jeden lub kilka styli, które określają wygląd i zachowanie okna. Styl jest w rzeczywistości flagą bitową typu DWORD, a poszczególne style - polami bitowymi.
    Większość styli okna definiuje się przy rejestracji klasy okna, jednak istnieje też możliwość modyfikowania styli (chociaż już nie wszystkich) po utworzeniu okna za pomocą funkcji SetWindowLong.
    Niektóre style mają zastosowanie do wszystkich okien, a niektóre są przeznaczone tylko dla okien należących do konkretnej klasy. Takie style "ogólnego przeznaczenia" rozpoczynają się od przedrostka WS_. Do najczęściej spotykanych można tu zaliczyć:
    • WS_BORDER - okno zawiera obramowanie;
    • WS_CAPTION - okno zawiera pasek tytułowy;
    • WS_CHILD - okno jest oknem potomnym; okno z takim stylem nie może posiadać własnego paska menu;
    • WS_DISABLED - okno jest wyłączone;
    • WS_HSCROLL - okno posiada poziomy pasek przewijania;
    • WS_MAXIMIZEBOX - okno posiada przycisk Maksymalizuj; flaga WS_SYSMENU musi być także włączona;
    • WS_MINIMIZEBOX - okno posiada przycisk Minimalizuj; flaga WS_SYSMENU musi być także włączona;
    • WS_SYSMENU - okno posiada menu systemowe na pasku tytułowym; flaga WS_CAPTION musi być włączona;
    • WS_VISIBLE - okno jest widoczne;
    • WS_VSCROLL - okno posiada pionowy pasek przewijania;
  • Rozmiar i położenie
    Każde okno jest prostokątem, który ma określoną szerokość (width) i wysokość (height). Położenie okna jest liczone od lewego-górnego rogu ekranu, a w przypadku okien potomnych (child windows) od lewego-górnego rogu okna rodzica (parent window). Wszystkie te wielkości mierzone są w pikselach.
    Chociaż okno musi być prostokątem, niekiedy spotyka się okna o kształtach nieregularnych. Taki efekt osiąga się dzięki wykorzystaniu regionów, ustawianiu przezroczystości niektórych kolorów i innych "technik" programistycznych. Jednak jest to tylko efekt pozorny. Okno dalej pozostaje prostokątem.

Wysyłanie komunikatów systemowych


Komunikaty systemowe (windows messages) to jedno z najbardziej elementarnych zagadnień dotyczących aplikacji okienkowych. Działanie takich programów polega w zasadzie na reakcji na otrzymane komunikaty. Ruch myszką, kliknięcie lewym klawiszem myszki, kliknięcie prawym klawiszem, ruch kółkiem myszki, naciśnięcie klawisza na klawiaturze, przesunięcie okna, zmiana rozmiaru, położenia okna, zamnknięcie okna - wszystkie te czynności (jak i wiele innych) powodują wygenerowanie specjalnych komunikatów. Komunikaty te są generowane przez sysytem operacyjny, a następnie wysyłane do aplikacji, w której dane zdarzenie miało miejsce. Aplikacja, po rozpoznaniu komunikatu, może wykonać określone czynności (np. wypisać literę w polu tekstowym po naciśnięciu klawisza na klawiaturze) lub zignorować komunikat.

W systemie Windows istnieje kilkaset predefiniowanych komunikatów. Jednak dla standardowej aplikacji okienkowej istotnych jest zazwyczaj tylko kilkanaście-kilkadziesiąt komunikatów, a te dla niej "niepotrzebne" są przez nią ignorowane.
W tym miejscu warto wspomnieć, że w najpopularniejszych środowiskach programistycznych (jak np. Visual Studio, czy Delphi) istnieją pewne mechanizmy znacznie ułatwiające obsługę i interpretację komunikatów przez programistę, a część z nich jest obsługiwana automatycznie.

Chociaż większość komunikatów powstaje w wyniku w reakcji na czynności wykonywane przez użytkownika, istnieje też całkiem spora liczba komunikatów typowo "systemowych", które sam Windows wysyła do okien uruchomionych aplikacji w odpowiedzi na rozmaite zdarzenia. Np. w momencie zamykania systemu, zmiany rozdzielczości ekranu, zmiany asocjacji plików itd.
Trzeba tu również wspomnieć, że każda aplikacja może definiować własne komunikaty. Dzięki temu można m.in. stosunkowo łatwo zaprogramować mechanizm wymiany informacji pomiędzy wieloma instancjami tej samej aplikacji, a nawet pomiędzy różnymi aplikacjami.

Z technicznego punktu widzenia, komunikat jest 32-bitową liczbą całkowitą bez znaku (DWORD). Komunikaty są wysyłane do okien aplikacji. Z każdym komunikatem mogą być związane dwa dodatkowe parametry (wParam i lParam), w których zapisywane są pewne specyficzne dla danego komunikatu informacje (np. współrzędne określające położenie kursora w momencie naciśnięcia jednego z klawiszy myszki). Do wysyłania komunikatów najczęściej wykorzystauje się funkcje systemowe: SendMessage i PostMessage.

Jak wspomniałem wcześniej, w Windows istnieje spora liczba komunikatów predefiniowanych. Część z nich ma zastosowanie do wszystkich okien, część jest przeznaczona tylko dla pewnych rodzajów (klas) okien. Np. komunikaty, których nazwy rozpoczynają się od przedrostka:

  • WM_, to komunikaty "ogólnego przeznaczenia";
  • BN_ lub BM_ - komunikaty związane z przyciskami (buttons);
  • LB_ lub LBN_ - komunikaty związane z listami (list boxes);
  • CB_ lub CBN_ - komunikaty związane z listami rozwijalnymi (combo boxes);
  • EN_ lub EM_ - komunikaty związane z kontrolkami tekstowymi (edit controls).


WinInfo umożliwia wysłanie dowolnego komunikatu do dowolnego okna istniejącego w systemie Windows. W tym celu należy wykonać następujące czynności:

  • wybrać menu Action->Send/Post Message... (pojawi się okno Send Message);
  • w polu Handle należy podać uchwyt (identyfikator) okna, do którego ma być wysłany komunikat;
  • w polu Message należy podać numer-identyfikator komunikatu lub wybrać żądany komunikat z listy po lewej;
  • w polach WPARAM i LPARAM można wpisać dodatkowe dane, które zostaną przesłane razem z komunikatem;
  • po wpisaniu wszystkich potrzebnych danych kliknij przycisk Send Message lub Post Message.
Trzeba tutaj przypomnieć, że okna z reguły akceptują tylko niewielką liczbę komunikatów i ten wysłany przez WinInfo może zostać zignorowany.

Odkrywanie haseł ukrytych za gwiazdkami


Niektóre programy do prawidłowego funkcjonowania wymagają podania przez użytkownika pewnych poufnych danych. Do wprowadzania takich danych z reguły stosuje się specjalne kontrolki edycyjne, w których każda wpisana litera jest widoczna w postaci gwiazdki, czy kropki.
Taka sytuacja ma miejsce np. w programach pocztowych, w których podaje się hasło dostępu do konta mailowego na serwerze pocztowym. Po wyświetleniu opcji takiego konta, zamiast hasła widoczne są tylko gwiazdki. Jest to oczywiście efekt pożądany. Może się jednak zdarzyć, że zapomnimy własnego hasła i będziemy je chcieli odzyskać.
I tutaj z pomocą przychodzi program WinInfo, który umożliwia odczyt napisów z takich kontrolek. W tym celu najpierw należy się upewnić, że opcja Reveal Passwords w oknie Options (klawisz F12) jest zaznaczona (ustawienie domyślne). Następnie należy zaznaczyć myszką "zagwiazdkowany" tekst. Po zaznaczeniu, zamiast gwiazdek powinno być widoczne nasze hasło.

hasło "zagwiazdkowane" i odkyte przez WinInfo
 
WinInfo odczytuje hasła ukryte pod gwiazdkami w oknach należących do aplikacji 32-bitowych. Spośród przetestowanych aplikacji wymienić można Microsoft Outlook i Outlook Express, FileZilla, Mozilla Thunderbird, DC++, Gadu-Gadu, Konnekt.
Program nie odkrywa haseł znajdujących się na stronach www.

Linki

  1. MSDN - Windows
    Szczegółowe omówienie okien w systemie Windows.
  2. MSDN - Window Classes
    Szczegółowe omówienie klas okien.
  3. MSDN - Messages and Message Queues
    Komunikaty w Windows.

Słowa kluczowe