HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Böngésző kontrol gyorsmenüjének letiltása


Példaprogram letöltése

4105 bájt

A TWebBrowser komponensnek köszönhetően az Internet Explorer képességeit beágyazhatjuk alkalmazásainkba. Mindössze egyetlen metódusát kell megfelelő paraméterekkel meghívnunk, hogy egy tetszőleges weblapot betöltsünk. A kontrolban is elérhető egy gyorsmenü, melynek pontjaival alapvető funkciók végezhetők el. Az alkalmazásainkba épített böngésző kontrol esetében ez a gyorsmenü letiltható, megakadályozandó az esetleges felhasználói beavatkozásokat. Cikkünkben bemutatjuk, hogyan lehetséges ez.

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.

Könyv
Ez a cikk megtalálható ebben a könyvben: Delphi Software Offline 2003 évkönyv 704. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |