Megosztás a következőn keresztül:


Windows Search mint fejlesztési platform

Az új fájlformátumok és adattárak tartalmának és tulajdonságainak indexeléséhez a Microsoft Windows Search bővítményekkel bővíthető.

Mielőtt az új fájlformátumok és adattárak külső fejlesztője lekérheti ezeket a formátumokat és tárolókat a lekérdezési eredményekben a Windows Intézőben, a fejlesztőnek az alábbi három dolgot kell tennie:

  • Implementáljon egy Shell-adatforrást a Shell-névtér kibővítéséhez.
  • Egy adattár elemeinek elérhetővé tétele (ha új adattárat adnak hozzá, mert indexelni kell).
  • Dolgozzon ki egy protokollkezelőt, hogy a Windows Search hozzáférhessen az indexeléshez szükséges adatokhoz.

Ez a témakör a következőképpen van rendszerezve:

Kezdetekhez

Mielőtt elkezdené létrehozni a Windows Search-alkalmazást, ne feledje, hogy ennek elsődleges módja egy Shell-adatforrás. A Shell-adatforrás kibővíti a Shell-névteret, és elérhetővé teszi az elemeket egy adattárban. Az adattár elemeit ezután a Windows Search rendszer egy protokollkezelővel indexelheti. A Windows Search shell-adatforrás implementálásával való elérésének közvetett megközelítése előnyben részesített, mivel teljes Shell-funkciókhoz biztosít hozzáférést. Ezzel ésszerű felhasználói élményt biztosít.

Ha azt szeretné, hogy a lekérdezés eredményei megjelenjenek a Windows Intézőben, implementálnia kell egy Shell-adatforrást, mielőtt létrehozna egy protokollkezelőt az index kiterjesztéséhez. Ha azonban minden lekérdezés programozott lesz (például OLE DB-n keresztül), és az alkalmazás kódja értelmezi a Shell helyett, a Rendszerhéj névterét továbbra is előnyben részesíti, de nem szükséges.

A Windows protokollkezelőre van szükség a fájltartalmak, például az adatbázisok elemeinek vagy az egyéni fájltípusok ismeretének megszerzéséhez. Bár a Windows Search képes indexelni a fájl nevét és tulajdonságait, a Windows nem ismeri a fájl tartalmát. Ennek eredményeképpen az ilyen elemek nem indexelhetők és nem tehetők közzé a Windows Shellben. Egyéni protokollkezelő implementálásával ezeket az elemeket közzéteheti. Az elérni kívánt fejlesztői forgatókönyv által azonosított kezelők listájáért tekintse meg Kezelőkáttekintése című témakört.

Keresési fejlesztési forgatókönyvek áttekintése

A Windows Search leggyakoribb fejlesztési forgatókönyvei a következők:

Új adattár hozzáadása

A Windows Search rendszerhéj-adattárára csak akkor van szüksége, ha új adattárat ad hozzá az indexeléshez. Az adattárak olyan adatok adattárai, amelyek a Shell programozási modell számára tárolóként, Shell-adatforrás használatával elérhetővé válnak. Az adattárban lévő elemeket ezután a Windows Search rendszer egy protokollkezelővel indexelheti. A protokollkezelő implementálja a protokollt egy tartalomforrás natív formátumban való eléréséhez. Az ISearchProtocol és ISearchProtocol2 felületek használatával egyéni protokollkezelőt implementálhat az indexelhető adatforrások kibontásához. További információ a Shell-adatforrások létrehozásáról: Az alapszintű mappaobjektum-felületek implementálása.

Új fájlformátum hozzáadása

Ha új egyéni fájlformátumot ad hozzá, szűrőkezelőt vagy tulajdonságkezelőt kell fejlesztenie, de mindkettőt nem. A szűrő az IFilter felület implementációja. Megnyitja az adott fájltípusú fájlokat, és szűri az indexelő tulajdonságait és szövegrészeit. A szűrők fájltípusokhoz vannak társítva, fájlnévkiterjesztések, MIME-típusok vagy osztályazonosítók (CLSID-k) szerint. Bár egy szűrő több fájltípust is képes kezelni, minden fájltípus csak egy szűrővel működik.

A tulajdonságkezelő a fájlban tárolt adatokat strukturált sémává alakítja, amelyet a Windows Intéző, a Windows Search és más alkalmazások felismernek, és elérhetők. Ezek a rendszerek ezután a tulajdonságkezelővel együttműködve írhatnak és olvashatnak tulajdonságokat egy fájlba és onnan. A lefordított adatok közé tartozik a részletek nézete, az információs tippek, a részletek panel, a tulajdonságlapok és így tovább. Minden tulajdonságkezelő egy adott fájltípushoz van társítva, amelyet a fájlnévkiterjesztés azonosít. A következők végrehajtásához szüksége van egy tulajdonságkezelőre:

  • Nem indexelt elemtulajdonságok megjelenítése a felhasználói felületen.
  • A tulajdonságok írásának támogatása.

A Windows keresési eredményeinek felhasználása

Az alábbi szakaszok a Windows Search-találatok felhasználásának számos módját ismertetik:

Adatok lekérdezése

A Windows Search és a Windows kombinált tulajdonságrendszerén alapuló alkalmazásokat író fejlesztők alkalmazástól és fájltípustól függetlenül hozzáférhetnek a fájlokhoz és elemekhez. Az alkalmazások kétféleképpen férhetnek hozzá az indexelő adataihoz:

  • Az alkalmazások közvetlenül kommunikálnak az OLE DB-vel úgy, hogy windowsos keresési strukturált lekérdezési nyelv (SQL) lekérdezéseket küldenek a Windows Search OLE DB-szolgáltatónak az eredmények lekéréséhez. A lekérdezések manuálisan vagy az ISearchQueryHelper felülettel hozhatók létre az SQL keresési kulcsszavakból és speciális lekérdezési szintaxisból (AQS).
  • Az alkalmazások a Shell-rétegen keresztül működnek. A Shell-réteg előnye, hogy más forrásokat is támogat, például a grep-t. Hátránya azonban, hogy nem minden indexelő funkció érhető el.

Egy másik lehetőség a search-ms:// és search:// protokollok használata, amelyek a Windows Intézőben renderelt URL-alapú kereséseket hajtják végre. Ez a beállítás lehetővé teszi a legkönnyebb fejlesztést, de nem ad vissza eredményeket vagy felhasználói beállításokat az eredménynézetből a hívó alkalmazásba. Más protokollokhoz hasonlóan a külső keresőalkalmazások is átvehetik a search-ms:// és search:// protokollokat, ha az alkalmazások megfelelnek a szükséges funkciókészletnek. További információ a lekérdezésről: Lekérdezési folyamat a Windows Search és Az index programozott lekérdezése.

A Windows 7-ben és újabb verziókban az összevont keresés egy új keresési szolgáltatót kínál, amely webkiszolgálókon keresztül, az OpenSearch protokollon keresztül lekérdezi a távoli adattárakat, és RSS- vagy Atom XML-hírcsatornákként számbaveszi az eredményeket. A keresési összekötők névtér-csomópontok, amelyek egy keresési szolgáltató használatával szimulálják a mappa viselkedését. A Windows 7 távoli adattáraiba való keresés összevonásáról további információt Összevont keresés a Windows. című cikkben talál.

Fájlok és elemek indexelése

Az indexelt tartalom a Windows Search bővítményeivel támogatott fájl- és adattípusokon, valamint a fájlrendszer mappáinak alapértelmezett belefoglalási és kizárási szabályain alapul. A Windows Searchben található szűrők például több mint 200 általános adattípust támogatnak, beleértve a Microsoft Office-dokumentumokat, a Microsoft Outlook e-maileket (a MAPI protokollkezelővel együtt), az egyszerű szöveges fájlokat, a HTML-t és még sok mást. A natívan támogatott fájltípusok teljes listáját az index tartalmazza.

Az index bővíthető tulajdonságkezelőkkel és szűrőkkel, hogy az új fájlformátumok tartalmát és tulajdonságait elérhetővé tegye az index és a Windows Intéző számára. A szűrők az IFilter felület implementációi. Kétféle szűrő létezik: az egyik az egyes elemekkel, például fájlokkal, a másik pedig a tárolókkal, például mappákkal kommunikál. A szűrők többcélúak, mivel támogatják az adatok, a szövegtartalmak, egyes tulajdonságok és több nyelv adattömbözését.

Ezzel szemben a tulajdonságkezelőknek konkrétabb céljuk van: a fájlnévkiterjesztések által azonosított bizonyos fájltípusok tulajdonságainak felfedése. Egy fájltípus tulajdonságkezelője engedélyezheti a tulajdonságok beolvasását és beállítását, és számba veheti az adott fájltípushoz társított tulajdonságokat. A szűrőkkel ellentétben a tulajdonságkezelők nem támogatják az adatok vagy szövegtartalmak kiírását, a tulajdonságkezelők pedig nem tudják jelezni, hogy a szövegtulajdonságok milyen nyelven vannak, hacsak nem támogatják a tulajdonságok írását.

Adattár indexelése

Az index a protokollkezelőkkel bővíthető, hogy hozzáférést biztosítson a védett adattárakhoz. A nem fájlrendszerbeli adattárakban (például adatbázisokban és e-mail-tárolókban) található fájlok és elemek esetében például egy protokollkezelőnek le kell képeznie egy URL-címről egy streamre. A protokollkezelők opcionálisan meg is határozhatják a megfelelő szűrőket, hogy adatokat nyerjenek ki egy streamből. A szűrők felsorolják az adattár URL-címeit. Az elemek ezután külön-külön indexelhetők a megfelelő szűrő- és/vagy tulajdonságkezelővel. További információ: Index kiterjesztése.

Az indexelési folyamat kezelése

Az alkalmazásfejlesztők különböző felügyeleti felületek használatával szabályozhatják a Windows Search-indexelés hatókörét és gyakoriságát. Ezek az interfészek olyan funkciókat tartalmaznak, amelyekkel hozzáadhatja és eltávolíthatja az indexelő által a módosításokat kereső könyvtárakat, manuálisan értesítheti az indexet az adatok változásairól, ellenőrizheti az indexelő állapotát, és kényszerítheti az adatok egy vagy több adat újraindexelését. További információ: Indexkezelése.

A Windows tulajdonságrendszer integrálása a Windows Search-alkalmazásokkal

A Windows tulajdonságrendszer adatdefiníciók bővíthető olvasási/írási rendszere, amely egységes módot biztosít a Shell-elemek metaadatainak kifejezésére. A Windows Vista és újabb rendszerek windowsos tulajdonságrendszere lehetővé teszi a Shell-elemek metaadatainak tárolását és lekérését. A Shell-elem bármilyen tartalom, például fájl, mappa, e-mail vagy névjegy. A tulajdonság egy Shell-elemhez társított metaadatok önálló darabja. A tulajdonságértékek PROPVARIANT szerkezetként vannak kifejezve.

Számos gyakori elemtípushoz, például fényképekhez, zenékhez, dokumentumokhoz, üzenetekhez, névjegyekhez és fájlokhoz széles körben megtalálható a közös tulajdonságok listája. A fejlesztők saját tulajdonságokat is bevezethetnek a platformon, ha egyetlen meglévő tulajdonság sem felel meg az igényeiknek. További információ az alkalmazások Windows-tulajdonságrendszerrel való integrálásáról: Tulajdonságkezelők fejlesztése.

Kezelők áttekintése

A kezelő egy COM-objektum, amely a Shell-elemek funkcióit biztosítja. A Legtöbb Shell-adatforrás bővíthető rendszert kínál a kezelők elemekhez való kötéséhez. A fájlrendszer mappája például a társításrendszert használja egy adott fájltípus kezelőinek kereséséhez. Minden fájltípushoz szükség van egy adott kezelőre. Az Adobe Acrobat .pdf fájltípushoz egy szűrőkezelőre van szükség, például egy másik szűrőkezelőre van szükség a .doc fájlformátumhoz, és így tovább.

A különböző kezelőknek van némi közös vonásuk. Windows Vista és újabb rendszereken a kezelőnek az alábbi felületek egyikével kell inicializálnia a kezelőt: IInitializeWithStream, IInitializeWithItemvagy IItinitializeWithFile.

Az alábbi táblázat felsorolja a magas szintű fejlesztői feladatokat, az egyes tevékenységekhez szükséges kezelő típusát, és egy hivatkozást tartalmaz az egyes tevékenységek végrehajtásával kapcsolatos fogalmi információkra.

Feladat Edzőtárs Elméleti információk
Fájl tulajdonságainak elérése indexeléshez Tulajdonságkezelő Tulajdonságkezelők fejlesztése
System-Defined egyéni fájlformátumok tulajdonságai
Vágólapformátumok hozzáadása egy elem adatobjektumához (IDataObject) (Az adatobjektumok húzással és másolással/beillesztéssel kapcsolatos forgatókönyvekben használatosak.) Adatobjektum-kezelő Adatkezelők létrehozása
A helyi menüben gyakran megjelenő elemhez tartozó igék hozzáadása Helyi menükezelő Helyi menükezelők létrehozása
Helyi menü testreszabása dinamikus ige
Fájltípus társítása egy adott ikonnal Ikonkezelő Ikonkezelők létrehozása
Tulajdonságlapok létrehozása felhasználói felületi képekkel és vezérlőkkel, amelyek lehetővé teszik a fájltípussal való egyéni interakciót Tulajdonságlap-kezelő tulajdonságlapkezelők
Elemtípus engedélyezése húzási és másolási/beillesztési forgatókönyvek támogatásához Drop handler Shell-objektumok átvitele húzással és vágólap
Szöveg- és dokumentumtulajdonságok adattömbjeinek kinyerése indexeléshez Szűrőkezelő Szűrőkezelők fejlesztése
Új fájltípus indexelése Szűrőkezelő, tulajdonságkezelő Szűrőkezelők fejlesztése
Tulajdonságkezelők fejlesztése
Adattár tartalmának indexelése Protokollkezelő Protokollkezelők fejlesztése
A Rendszerhéj elem egyszerűsített nézetének előnézete a Windows Intéző előnézeti ablaktábláján Előzetes verzió kezelője előzetes kezelők
Előugró szöveg beírása, amikor egy egér rámutat egy felhasználói felületi objektumra Infotip kezelő Shell-bővítménykezelők létrehozása (infotip testreszabása)
Statikus rendszerkép biztosítása a Shell-elem ábrázolásához Miniatűr kezelő miniatűr-kezelők

 

Az alábbi táblázat a kezelőket és az egyes kezelőtípusok implementálásának felületeit sorolja fel.

Edzőtárs Felületek
Drop handler IDropTarget, IDropTargetHelper, IPersistFile, IShellExtInit
Adatobjektum-kezelő IDataObject, IPersistFile
Szűrőkezelő IFilter
Ikonkezelő IExtractIcon
Nem kötelező: IPersist, IPersistFile
Infotip kezelő IQueryInfo
Előzetes verzió kezelője IPreviewHandler
Tulajdonságkezelő IPropertyStore
Protokollkezelő IFilter, ISearchProtocol, IUrlAccessor
Nem kötelező: ISearchProtocol2, IUrlAccessor2, IUrlAccessor3, IUrlAccessor4
Tulajdonságlap-kezelő IShellExtInit, IShellPropSheetExt
Helyi menükezelő IContextMenu, IExplorerCommand, IShellExtInit
Miniatűr kezelő IThumbnailProvider

 

Jegyzet

A tulajdonságkezelők néha metaadat-kezelőként vannak elvetve. A Shell-adatforrásokat néha Shell-névtérbővítménynek is nevezik. A fájltípus-kezelőt néha Shell-bővítménykezelőnek vagy Shell-bővítménynek is nevezik.

 

További információ a kezelők létrehozásáról: Shell-bővítménykezelők létrehozása. További információ a tulajdonságokról: Windows tulajdonságrendszer.

Bővítménytelepítői irányelvek

Bővítménytelepítő létrehozásakor kövesse az alábbi irányelveket:

  • A telepítőnek az EXE vagy az MSI telepítőt kell használnia.
  • A kibocsátási megjegyzéseket meg kell adni.
  • Minden telepített bővítményhez létre kell hozni egy Programok hozzáadása/eltávolítása bejegyzést.
  • A telepítőnek át kell vennie az aktuális bővítmény által megismert fájltípus vagy -tároló beállításjegyzék-beállításait.
  • Ha felülír egy korábbi bővítményt, a telepítőnek értesítenie kell a felhasználót.
  • Ha egy újabb bővítmény felülírt egy korábbi bővítményt, a felhasználónak vissza kell tudnia állítani az előző bővítmény funkcióit, és ismét alapértelmezett bővítményként kell használnia az adott fájltípushoz vagy tárhoz.

Megjegyzés a implementátorokhoz

Szűrő- vagy tulajdonságkezelő létrehozása előtt a fejlesztőknek a következőket kell figyelembe venniük:

  • Ezek a kezelők olyan folyamaton belüli bővítmények, amelyek olyan folyamatokba vannak betöltve, amelyeket nem szabályoz, például a szűrési démonfolyamatot, a Windows Explorert (grep search) és a külső gazdagépeket, például a Windows Mailet.
  • Olyan biztonságos kódot kell írnia, amely elég robusztus ahhoz, hogy kezelni tudja a rendszer támadásához létrehozott fájlformátum tetszőlegesen sérült formáit.
  • A bővítmény nem szivároghat ki olyan erőforrásokból, amelyek problémákat okoznak a gazdafolyamatok számára.
  • A bővítmény nem összeomlhat, mivel ez a gazdafolyamatokat is összeomlja, és lelassítja a szűrési folyamatot.
  • Mivel ezek a kezelők egy háttérrendszer-folyamatban futnak, a rendszer teljesítménykövetelményeinek teljesítéséhez gyorsan, minimálisan felhasznált CPU-val és I/O-val kell teljesíteniük a teljesítményt.

Ezért ezeket a bővítményeket a rendszerszintű kód létrehozása terén jártas fejlesztőknek kell írniuk.

További erőforrások

Windows Search áttekintése

Windows Search által támogatott nyelvek

Felügyelt kód használata a Shell-adatokkal és a Windows Search

Windows Search fejlesztői útmutatója