KillAd
Wed, 9 October 2002
Przykład programu w Delphi służącego do zamykania określonych okien w systemie jest nadal aktualny.
Wstęp
Czy nie zdarzyło się Wam kiedyś, buszując po niektórych stronach, ujrzeć denerwujących, małych okienek. Te małe okienka, zwane popupami, najczęściej wyświetlają reklamy, bądź teksty, na których zależy webmasterowi takiego serwisu aby internauta odwiedzający jego serwis je spostrzegł. W rzeczywistości pierwsze co robimy to najechanie kursorem myszy na "x" w prawym górnym rogu okna. Jednak co zrobić gdy tych okien jest dużo więcej i uruchamiają się bez przerwy tylko spowalniając i tak już bardzo ociężałe połączenie? Z ratunkiem przychodzi nam bardzo ciekawy program o nazwie KillAd. Mały, bo wraz z polską lokalizacją zajmujący 164 kB, użyteczny, dający chwilę odpoczynku naszym nerwom i co najważniejsze darmowy program, potrafi znaleźć i zamknąć ciągle otwierające się popupy, które przecież dla wielu z nas są w pierwszej piątce rzeczy najbardziej niechcianych w sieci.
Opis programu
Aplikacja umożliwia zdefiniowanie reguł według których
filtrowanie okien ma się odbywać. Do ustawienia są parametry, według których
okno będzie uznawane za popup: nazwa okna, jego rozmiar, oraz wszystkie nowo
otwarte.
Program, po uruchomieniu, dodaje swoją ikonkę do zasobnika systemowego skąd możemy
nim sterować włączając lub wyłączając czuwanie programu, zmieniając
ustawienia lub dodawać nazwy popupów do bazy, tak zwanej Kill-Listy,
oferowanej przez program, a zawierającej nazwy okien do zamknięcia.
Standardowa Kill-Lista programu zawiera kilkanaście pozycji, jednak głupotą
byłoby nie wprowadzenie możliwości modyfikacji listy celów dla naszego zabójcy.
Tak więc, autor wprowadził i taką możliwość. Aby wywołać to okno klikamy
na pozycję "Dodaj popup" w menu programu.
Autor dał nam także możliwość utworzenia własnej listy wyjątków, która
zawiera okna podlegające parametrom podanym w ustawieniach, a jednak nie
przeznaczonych do zamknięcia.
Teraz postaram się wytłumaczyć wszystkie polecenia wywoływane z menu
programu. Pierwszą opcją jest "Czuwanie". Pozwala zablokowanie
zamykania okien przez program, aż do odwołania. Kolejną opcją jest
"Tryb zamykania" - zamyka wszystkie nowo otwarte okna, które próbowaliśmy
uruchomić po jego uaktywnieniu. Opcja "Odtwarzanie dźwięku", a w
niej umieszczono możliwość wyboru przez użytkownika sterownika dźwięku (Wave,
PC Beep) wybranie ustawień losowych lub jego brak. Taki bajer ;) Statystyki to
bardzo przydatna rzecz w programie. Pokazują one czas jego pracy ilość
pojawiających się popupów na godzinę, czas bezczynności, testowane przez
program okna, śledzenie okien, popupy zamknięte oraz otwarte. A jeżeli nie
podoba nam się statystyka, możemy ją po prostu zresetować zerując tym samym
wszystkie wyniki. "Informację", "Pomoc" wiadomo do czego służy,
tak samo jak "Wyjście". Dlaczego ominąłem "Ustawienia"?
Dlatego żeby właśnie teraz je zaprezentować :) Do dzieła więc!
Tak maluje się okno Ustawień. Omówię tutaj tylko nieliczne opcję, przyznam
się, że nie kapię do czego służą inne :) Opcja "Czekaj na zmianę nagłówka"
pomorze zabezpieczyć okna przeglądarki przed przedwczesnym zamknięciem.
Aplikacja najpierw poczeka na zmianę nagłówka okna przeglądarki na tytuł
wczytywanej strony, a następnie w zależności od charakteru okna wykona jego
zamknięcie. Możemy tu zmienić zawartość Kill-Listy i listy wyjątków.
"Zamknij każde okno mniejsze niż:" - ze względu na to, że popupy
mają zwykle małe rozmiary możemy ustawić rozmiary okien podlegającym zamknięciu.
"Nie zamykaj okna większego niż:" - tu tak samo tyle że odwrotnie
:)
Na samym dole "Opóźnienie zamykania" - czekaj ileś tam milisekund
zanim zamkniesz podejrzane okno. Oczywiście wszystkie ustawienia możemy także
zresetować do ustawień domyślnych.
Piszemy własny program
Myśleliście, że się obejdzie bez
programowania - nic z tego! Spróbujemy tu omówić zagadnienie "Jak
napisać podobny program?". Umożliwić nam ma to oczywiście Delphi.
Teoretycznie jest to proste, gorzej z wykonaniem - żartowałem. Teoria głosi:
"Wyszukaj okno, pobierz jego uchwyt i wyślij do niego komunikat WM_CLOSE
(Zamknij)" Proste?
Będziemy potrzebować jednego pola tekstowego i jednego przycisku. Wszystko
znajdziesz na palecie Standard. Napiszemy program który będzie zamykał okno
o nazwie którą wpiszemy do pola tekstowego - fajnie? Oczywiście możecie
potem udoskonalić projekt (aby choć trochę przypominał KillAd ;)
Po ustawieniu komponentów na formie klikamy podwójnie na nasz przycisk.
Otwiera się edytor kodu gdzie wpisujemy już poważniejszy kod z użyciem
uchwytu i komunikatów. Te parę linijek kodu wystarczy do spełnienia powyżej
opisywanych czynności. Wyjaśnię później o co chodzi, ale najpierw spójrz
na poniższy kod.
Wstaw coś takiego:
var
Uchwyt : THandle;
begin
Uchwyt := FindWindow(nil, PChar(Edit1.Text));
PostMessage(Uchwyt, WM_CLOSE, 0, 0 );
Pierwsza linijka deklaruje zmienną typu
Handle. Jest to uchwyt szukanego potem okna. Uchwyt (Handle) to element który
w systemie Windows posiada każde okno. W następnej linijce (pobegin)
naszej zmiennej jest przypisywany uchwyt wyszukanego okna, gdzieFindWindow()to funkcja szukająca okna o podanych parametrach (IpClassNamelub/orazIpWindowName). Gdy nie znamy jednego z tych parametrów pozostawiamy go
wpisując w to miejsce słówkoniloznaczające w programowaniu
"nic".
Kolejna linia wysyła komunikat do okna posiadającego dany uchwyt z rozkazem
jego zamknięcia (WM_CLOSE). Te podstawy wystarczą aby kiedyś stworzyć
swojego KillAd'a.
Zakończenie
Wielkie Dzięki ALL! Fajnie, że Was nie zanudziłem (a nie zanudziłem, prawda? ;). Podam jeszcze tylko namiary na autora programu, samą aplikację i spolszczenie. Fnx wszystkim za uwagę i żegnam!
-
WWW programu:
http://www.fsc-soft.com/
-
Mejl autora:
fofcheek@hotmail.com
-
Tłumaczenia:
www.polskie.wersje.prv.pl
Podobne artykuly:
- Delphi - Budowa modułu
- Delphi - Piszemy własny odtwarzacz multimedialny
- Delphi - Piszemy prosty edytor tekstu
- Delphi - Jak pisać?
- Delphi - Pobieranie plików z Internetu
- Delphi - Potęga możliwości ShellExecute()
- Delphi - Zasoby