Mały Głód

Autor: Potwoor

Oto kod który podziurawi wszystkie okna, zasada działania podobna do WinConvultor

 
function Hungry(WHandle: HWND; LParM: LParam): Boolean;StdCall;Export;
var
  a,b:HRGN;
  x,y:integer;
  r:TRect;
  s:integer;
begin
 
  Result:=true; // potrzebne by zaliczyć więcej okienek
 
  if IsWindowVisible(WHandle) then // jeśli okno jest widoczne to... przyśpiesza działanie omijając niewidoczne okna
  begin
 
    Windows.GetWindowRect(WHandle,r); // rozmiar okna
    x:=Random(r.Right-r.Left); // losujemy pozycję dziury
    y:=Random(r.Bottom-r.Top); // losujemy pozycję dziury
    a:=Windows.CreateRectRgn(0,0,r.Right-r.Left,r.Bottom-r.Top); // tworzymy region odpowiadający oknu
    if LParM=1 then // jeśli LParM = 1 to zachowujemy poprzednie dziurki pobierając bieżący region okna
      Windows.GetWindowRgn(WHandle,a); // bez wcześniejszego stworzenia regionu nie działa ta funkcja ( zwraca 0 czyli ERROR )
    s:=10+Random(30); // losujemy rozmiar dziury
    b:=Windows.CreateEllipticRgn(x,y,x+s,y+s); // tworzymy region w kształcie dziurki
    Windows.CombineRgn(b,a,b,rgn_diff); // do regiony b przypisujemy region a bez regionu b ( wycinamy dziurkę )
    Windows.SetWindowRgn(WHandle,b,true); // ustawiamy otrzymany region
 
  end;
 
end;
 


wywołanie dla jednej dziurki na okno:
 
Windows.EnumWindows(@Hungry,0);
 


wywołanie dla wielu dziurek na okno:
 
Windows.EnumWindows(@Hungry,1);
 


wstawić w pętle i Mały Głód zjada nam okienka

OSTRZEŻENIE - zmiany w powyższym kodzie mogą doprowadzić do niechcianych lecz czasem ciekawych efektów

podczas pisania uzyskałem następujące efekty →
straciłem Menu Start
straciłem około 50% menu podręcznych
zamiast uzyskania dziury parę okien uzyskało kształt dziury

Kategoria: Delphi » Żarty w Delphi

4 komentarze

Avatar: Romanos
Napisany 2011-03-06 16:32 przez Romanos

dzięki zrobiłem kawał kumplowi xd

Avatar: Legalnl
Napisany 2008-10-18 14:35 przez Legalnl

kurde piękne to :D:D:D nie zle

Flawlessss Zresetuj explorera

Brak avatara
Napisany 2008-08-23 17:09 przez Potwoor_

CreateRectRgn, podajemy dane z GetWindowRect i przypisujemy uzyskany region

oczywiście okna które miały oryginalnie ciekawe kształty uzyskają kształt wybitnie kanciasty

Brak avatara
Napisany 2008-08-22 21:14 przez Flawlessss

jak przywrócić stan pierwotny xD??

4programmers.net