Cum să adăugați elementul dvs. în meniul contextual, adică

Abilitatea de a adăuga propriul element în meniul contextual IE permite utilizatorului să personalizeze browserul "de la sine", extinzându-și funcționalitatea în direcția cea bună.







De exemplu, de pe site-ul lingvo.yandex.ru puteți descărca modulul pentru IE, care vă permite să primiți prin traducerea de rețea din engleză sau engleză orice cuvânt sau frază selectată de dvs. în fereastra browserului. Confortabil? Fără îndoială! Selectați cuvântul dorit din browser, câteva clicuri și înaintea unei pagini cu o traducere. În plus, există multe module ale diferitelor motoare de căutare (yandex.ru, google.com, codeproject.com), permițându-vă să căutați rapid site-uri relevante. De asemenea, managerii alternativi de încărcare a fișierelor (GetRight, FlashGet, etc.) consideră că este datoria lor să lase urme în meniul contextual IE.

După această mică introducere, cred că a devenit clar în ce aplicații acest lucru poate veni la îndemână. Acum, să vedem cum funcționează. Pentru a nu instrui pe pisici, vom încerca să scriem o componentă care implementează căutarea pe site-ul nostru preferat (dacă cineva nu a înțeles - RSDN.ru)

Scapă prin registru

NOTĂ
Prin adăugarea de secțiuni la sucursala HKEY_CURRENT_USER, veți afecta setările Internet Explorer numai pentru utilizatorul curent. Pentru a adăuga funcționalitatea necesară tuturor utilizatorilor, utilizați sucursala HKEY_LOCAL_MACHINE.

Nu vă faceți griji dacă lipsește secțiunea MenuExt de pe computer. Pur și simplu înseamnă că nu aveți elemente suplimentare. În general, pentru a adăuga propriul element în meniul contextual, trebuie să creați o secțiune și o pereche de parametri (evidențiate prin caractere aldine). Parametrii Contexte și Steaguri sunt opțional. Sensul lor va fi explicat mai jos.

Astfel, adăugând o nouă cheie în calea specificată, vom crea un nou element de meniu contextual. Pentru numele cheii, trebuie să specificați textul care va fi utilizat când meniul este afișat. De asemenea, puteți utiliza caracterul "" care specifică tasta rapidă. Valoarea implicită pentru această cheie trebuie să conțină adresa URL a paginii care conține scriptul, care va fi executată când acest element este selectat.

Script de procesare

Deci, meniul este adăugat, rămâne să scrie scenariul. În exemplul următor, este afișat modul de selectare a unui element de meniu pentru a deschide o fereastră nouă cu rezultatele căutării pe site-ul RSDN. Ca șir de căutare, textul de selecție din fereastra activă este transferat.

Utilizând proprietatea menuArguments a obiectului extern, puteți accesa obiectul (fereastra) ferestrei în care a fost apelat meniul contextual. Ei bine, prin acest obiect este ușor să accesați întregul model obiect Interner Explorer.

Utilizarea componentelor COM

Având un pointer la obiectul ferestrei în metoda Run, putem face ceva bun. De exemplu, accesați site-ul RSDN.

Folosind această tehnică, este ușor să implementați aproape orice funcționalitate. De exemplu, FlashGet utilizează o tehnică similară pentru implementarea aplicației "Descărcați cu FlashGet" și "Încărcați toate"

NOTĂ
În ciuda faptului că creăm și folosim un obiect COM în Internet Explorer, nu este necesar să îl marchem ca fiind "sigur" (CATID_SafeForScripting, CATID_SafeForInitializing).







Afișați contextul

În ultimul exemplu, am adăugat propriul element de meniu la IE. Cu toate acestea, dacă vă gândiți la asta, afișarea elementului nostru nu este întotdeauna rezonabilă. De exemplu, nu are sens să adăugați comanda "Căutare RSDN" ca răspuns la mătase făcând clic dreapta pe o imagine sau pe un control ActiveX. Prin urmare, este logic să determinăm contextul afișării elementului de meniu, adică Spune-i lui IE când să ne arate articolul și în care nu. Acest lucru se poate face adăugând parametrul opțional Contexte la secțiunea "Căutare RSDN".

Parametrul Contexte conține identificatorul meniului contextual care determină răspunsul la acțiunea de afișare a acestui element. Este posibilă combinarea în biți a următoarelor opțiuni.

De exemplu, dacă dorim ca elementul nostru să apară numai pe o legătură sau dacă există un fragment selectat, setați parametrul Contexte la 0x30 (0x10 | 0x20).

Modal modal

Specificând un alt parametru opțional este Flags = 0x1. Puteți forța IE să execute scriptul în modul modal. În acest caz, dialogul nu va fi ascuns, dar scriptul va fi lansat ca un apel la metoda ShowModalDialog. De asemenea, puteți accesa fereastra sursă prin intermediul meniurilor external.menuArguments. Va avea grijă să închideți caseta de dialog, în acest caz, va trebui să o faceți singur.

Pentru a demonstra această metodă în acțiune, vom complica primul exemplu. Să oferim utilizatorului posibilitatea de a edita textul interogării de căutare. Pentru a face acest lucru, trebuie să creați un simplu dialog HTML cu următorul conținut.

Informații despre eveniment

Realizat de exemplele anterioare, aproape am uitat să vă spun despre o altă posibilitate.

Când selectați un element din meniu, obiectul evenimentului din fereastra sursă (external.menuArguments.event) conține câteva informații utile pe care le puteți utiliza din scenariu. De exemplu, obiectul pe care ați făcut clic pe mouse-ul poate fi obținut din proprietatea event.srcElement. Și proprietatea event.type conține una dintre următoarele linii care determină tipul meniului afișat:

  • MenuExtDefault
  • MenuExtImage
  • MenuExtControl
  • MenuExtTable
  • MenuExtTextSelect
  • MenuExtAnchor
  • MenuExtUnknown

Folosind aceste informații, puteți implementa propriul dvs. comportament (diferit de cel al altora) pentru diferite tipuri de meniu contextual.

Exemple, exemple

Pentru a demonstra cele de mai sus, voi da patru exemple:

  1. Script de căutare program pentru fragmentul de text selectat
  2. RS2 Search2 Dialogul HTML al căutării site-ului
  3. Du-te la RSDN! Obiectul COM care implementează tranziția pe RSDN.ru
  4. Programatorul orașului ».NET» COM-obiect, realizând căutarea pe fragmentul selectat

1 și 2 exemple conțin script-uri WSH (Windows Script Host), ameliorarea sapării manual în registru. Pentru a adăuga un element nou, executați doar fișierul install.vbs. Asigurați-vă că directorul fișierelor script este specificat corect:

În cel de-al treilea exemplu, adăugarea elementului de meniu corespunzător are loc simultan cu înregistrarea obiectului COM, deci nu este necesar să rulați scripturi suplimentare. Asigurați-vă că numai scriptul GoRSDN.dll.htm este în același director ca GoRSDN.dll.

NOTĂ
Probabil ați observat numele ciudat al scriptului - GoRSDN.dll.htm. Din păcate, acest lucru se datorează nevoii de producție. Limbajul scripturilor de registru din ATL (RGS - ReGistry Script) susține un mod simplu și elegant de comunicare cu registrul. Pentru a specifica locația unui fișier cu un obiect COM, acesta utilizează substituentul predefinit -% MODULE%. Când se numește funcția de înregistrare, această etichetă este înlocuită cu rezultatul apelării funcției GetModuleFileName. Este posibil să definiți locașii de substituire personalizați. Cu toate acestea, în acest caz, puteți face mai ușor scriind în fișierul RGS următoarele: '% MODULE% .htm'. În acest caz, adresa URL a scriptului va fi calea spre fișierul GoRSDN.dll.htm. Care, de fapt, era necesar.

Alexey Kiryushkin a propus o soluție elegantă a problemei. Metoda sa este demonstrată în al patrulea exemplu. Să profităm de faptul că Internet Explorer poate încărca paginile HTM din resurse. În acest caz, puteți importa scriptul în resurse DLL care conțin obiectul COM. În acest caz, scriptul RGS corespunzător va arăta astfel:

Aici, "GORSDN.DLL.HTM" este identificatorul de șir al resurselor htm-script din DLL.







Articole similare

Trimiteți-le prietenilor: