Az alkalmazás indulásakor betöltünk egy weblapot, és megjelenítjük azt a WebBrowser kontrolban. Ehhez a kontrol Navigate2 metódusát használjuk.
axWebBrowser1.Navigate("www.animare.hu",ref o,ref o,ref o,ref o);
A kontrol felületén kattintva a jobb egérgombbal 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.
hHook = Win32.SetWindowsHookEx(WH_MOUSE, HookProcedure, (IntPtr)0, AppDomain.GetCurrentThreadId());
A metódus visszaad egy kezelőt, melyet majd a figyelést megszüntető metódusnak adunk át paraméterként.
if (hHook != 0) Win32.UnhookWindowsHookEx(hHook);
A metódusok, és típusok deklarációi a Win32 osztályban találhatók. 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 MouseHookProc.
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.
if (wParam.ToInt32() == WM_RBUTTONDOWN || wParam.ToInt32() == WM_RBUTTONUP)
{
StringBuilder builder = new StringBuilder(256); Win32.GetClassName(hs.hwnd,builder,builder.Capacity);
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 (builder.ToString() == "Internet Explorer_Server")
{
return 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.
return Win32.CallNextHookEx(hHook, nCode, wParam, lParam);