Az alkalmazás indulásakor betöltünk egy weblapot és megjelenítjük azt a TWebBrowser kontrolban. Ehhez a kontrol Navigate2 metódusát használjuk.
Url := 'http://www.animare.hu';
WebBrowser1.Navigate2(Url, Flags, TargetFrameName, PostData, Headers);
A kontrol felületén jobb egérgombbal kattintva elérhető, hogy egy gyorsmenü jelenjen meg, néhány funkciót elérhetővé téve a felhasználó számára.
A gyorsmenü letiltását úgy valósíthatjuk meg, hogy figyeljük a globális egéreseményeket, vagyis a jobboldali gomb lenyomásának eseményét. A megoldáshoz el kell végeznünk egy regisztrációt a SetWindowsHookEx metódussal, a TILTÁS gomb megnyomásakor.
HookID := SetWindowsHookEx(WH_MOUSE, HookProc, 0, GetCurrentThreadId());
A metódus visszaad egy kezelőt, melyet majd a figyelést megszüntető metódusnak adunk át paraméterként.
if HookID <> 0 then UnHookWindowsHookEx(HookID);
Ez utóbbi metódushívás az ENGEDÉLYEZÉS gomb meghívásakor történik meg.
A metódus paraméterként kap egy függvényt, melyben feldolgozzuk a kattintás eseményét. Ennek neve HookProc.
Amikor a felhasználó a jobb gombbal a kattint valahol, akkor meghívjuk a GetClassName API metódust, mely visszaadja, hogy mely alkalmazás felületén történt ez a kattintás.
case wParam of
WM_RBUTTONDOWN,
WM_RBUTTONUP:
begin
GetClassName(PMOUSEHOOKSTRUCT(lParam)^.HWND, szClassName, SizeOf(szClassName));
Amennyiben a kattintás a kontrol felületén történt, a betöltött HTML lapon, vagyis a kapott osztálynév azonos az „Internet Explorer_Server” karakterlánc-konstanssal, akkor a metódus visszatér a HC_SKIP értékkel, vagyis nem adódik tovább a figyelési információ a következő ciklusnak. Ekkor nem érvényesül az alapértelmezett viselkedés, vagyis a menü nem jelenik meg.
if lstrcmp(@szClassName[0], @ie_name[1]) = 0 then
Result := HC_SKIP
Ellenkező esetben meghívódik a CallNextHookEx metódus. Amennyiben nincs regisztrálva az egér viselkedésének figyelése, vagy a kattintás nem a figyelt osztályú ablakon történik, akkor az alapértelmezett viselkedés valósul meg, jelen esetben a menü megjelenik.