Domů

Balík srandakódů (2)

 Posledně jsem slíbil, že si ukážeme, jak skrýt některé ovládací prvky Windows a vystřelit si tak z někoho. Tady to je.


Skrytí tlačítka Start

 Jedna z věcí, která dokáže zaručeně rozhodit, je když například nevlastníte žádný souborový manažer a spouštíte nainstalované programy z nabídky Start a najednou zjistíte, že tlačítko pro vyvolání nabídky zmizelo. Ti znalejší počítačů chladnokrevně použijí tlačítko s logem Windows na klávesnici a budou dělat, jako že se nic nestalo. Těm ostatním to dokáže práci s počítačem pěkně osladit. :)

procedure HideStartButton;
var hWndTaskbar, hWndButton: hWnd;
begin
  hwndTaskbar:= FindWindow('Shell_TrayWnd', nil); // Zjistit handle hlavního panelu
  hwndButton := FindWindowEx(hWndTaskbar, 0, 'Button', nil); // Handle tlačítka Start
  SendMessage(hWndButton, WM_HIDE, 0, 0); // Jednoduše pošleme tlačítku zprávu, že se má schovat
end;

procedure ShowStartButton;
var hWndTaskbar, hWndButton: hWnd;
begin
  hwndTaskbar:= FindWindow('Shell_TrayWnd', nil);
  hwndButton := FindWindowEx(hWndTaskbar, 0, 'Button', nil);
  SendMessage(hWndButton, WM_SHOW, 0, 0); // Pošleme tlačítku zprávu, že se má znovu zobrazit
end;


Skrytí hlavního panelu

 Jesti se vám zdá, že miniaturní tlačítko nemůže nikoho rozhodit, co takhle skrýt rovnou celý hlavní panel? K tomu se dá celkem snadno použít ShowWindow od minule.


  ShowWindow(FindWindow('Shell_TrayWnd', Nil), SW_HIDE); // SW_SHOW pro zobrazení



Skrytí hodin v trayi

 Dost nenápadná, ale občas velmi účinná změna.

procedure HideClock;
var Wnd: hWnd;
begin
  Wnd := FindWindow('Shell_Traywnd', nil); // Handle hlavního panelu, kde se hodiny nachází
  Wnd := FindWindowEx(Wnd, hWnd(0), 'TrayNotifyWnd', nil); // Handle oznamovací oblasti kolem hodin (traye)
  Wnd := FindWindowEx(Wnd, hWnd(0), 'TrayClockWClass', nil); // Handle samotných hodin
  ShowWindow(Wnd, SW_HIDE); // SW_SHOW pro zobrazení
end;


"Vypnutí" plochy

 Tak toho si musí všimnout snad úplně každý. Zmizí ikony, a když na plochu kliknete pravým tlačítkem, tak se taky nic nestane. :)

procedure DesktopOff;
var Wnd: hWnd;
begin
  Wnd := FindWindow('Progman', nil);
  Wnd := FindWindowEx(Wnd, hWnd(0), 'ShellDll_DefView', nil);
  ShowWindow(Wnd, SW_HIDE); // SW_SHOW pro opětné "zapnutí"
end;



To by pro dnešek stačilo. Příště se podíváme na CD-ROMku.

Související články:
Balík srandakódů (1)