Windows Search jako platforma dewelopera
Aby indeksować zawartość i właściwości nowych formatów plików i magazynów danych, usługa Microsoft Windows Search musi zostać rozszerzona o dodatki.
Zanim inny deweloper nowych formatów plików i magazynów danych może uzyskać te formaty i magazyny, które będą wyświetlane w wynikach zapytania w Eksploratorze Windows, deweloper musi wykonać następujące trzy czynności:
- Zaimplementuj źródło danych powłoki, aby rozszerzyć przestrzeń nazw powłoki.
- Uwidaczniaj elementy w magazynie danych (jeśli dodają nowy magazyn danych, ponieważ będzie to konieczne indeksowanie).
- Utwórz procedurę obsługi protokołu, aby usługa Windows Search mogła uzyskiwać dostęp do danych na potrzeby indeksowania.
Ten temat jest zorganizowany w następujący sposób:
- wprowadzenie
- omówienie scenariuszy programowania wyszukiwania
- Omówienie programów obsługi
- wytyczne instalatora dodatku
- uwaga dotycząca implementacji
- dodatkowe zasoby
- Tematy pokrewne
Wprowadzenie
Przed rozpoczęciem tworzenia aplikacji Windows Search należy pamiętać, że preferowanym sposobem wykonania tej czynności jest źródło danych powłoki. Źródło danych powłoki rozszerza przestrzeń nazw powłoki i uwidacznia elementy w magazynie danych. Elementy w magazynie danych mogą być następnie indeksowane przez system Windows Search przy użyciu programu obsługi protokołu. To pośrednie podejście do uzyskiwania dostępu do usługi Windows Search przez zaimplementowanie źródła danych powłoki jest preferowane, ponieważ zapewnia dostęp do pełnej funkcjonalności powłoki. Dzięki temu środowisko użytkownika jest uzasadnione.
Jeśli chcesz, aby wyniki zapytania pojawiły się w Eksploratorze Windows, musisz zaimplementować źródło danych powłoki przed utworzeniem procedury obsługi protokołu w celu rozszerzenia indeksu. Jeśli jednak wszystkie zapytania będą programowe (na przykład za pośrednictwem OLE DB) i interpretowane przez kod aplikacji, a nie powłokę, przestrzeń nazw powłoki jest nadal preferowana, ale nie jest wymagana.
Aby system Windows uzyskał wiedzę na temat zawartości plików, takich jak elementy w bazach danych lub niestandardowych typach plików, jest wymagany program obsługi protokołu. Chociaż usługa Windows Search może indeksować nazwę i właściwości pliku, system Windows nie zna zawartości pliku. W związku z tym takie elementy nie mogą być indeksowane ani uwidocznione w powłoce systemu Windows. Implementując niestandardową procedurę obsługi protokołu, można uwidocznić te elementy. Aby uzyskać listę programów obsługi zidentyfikowanych przez scenariusz dewelopera, który próbujesz osiągnąć, zobacz Omówienie programów obsługi.
Omówienie scenariuszy programowania wyszukiwania
Najbardziej typowe scenariusze programistyczne w usłudze Windows Search to:
- Dodawanie nowego magazynu danych
- Dodawanie nowego formatu pliku
- korzystanie z wyników usługi Windows Search
Dodawanie nowego magazynu danych
Potrzebujesz magazynu danych powłoki dla usługi Windows Search tylko wtedy, gdy dodajesz nowy magazyn danych do indeksowania. Magazyn danych to repozytorium danych, które można uwidocznić w modelu programowania powłoki jako kontener przy użyciu źródła danych powłoki. Elementy w magazynie danych mogą być następnie indeksowane przez system Windows Search przy użyciu programu obsługi protokołu. Procedura obsługi protokołów implementuje protokół na potrzeby uzyskiwania dostępu do źródła zawartości w formacie natywnym. Interfejsy ISearchProtocol i ISearchProtocol 2 są używane do implementowania niestandardowej procedury obsługi protokołu w celu rozszerzenia źródeł danych, które można indeksować. Aby uzyskać informacje na temat tworzenia źródła danych powłoki, zobacz Implementowanie podstawowych interfejsów obiektów folderów.
Dodawanie nowego formatu pliku
W przypadku dodania nowego niestandardowego formatu pliku należy opracować program obsługi filtrów lub program obsługi właściwości, ale nie oba te elementy. Filtr to implementacja interfejsu IFilter. Otwiera pliki określonego typu pliku oraz filtruje właściwości i fragmenty tekstu indeksatora. Filtry są skojarzone z typami plików, co oznacza rozszerzenia nazw plików, typy MIME lub identyfikatory klas (CLSID). Chociaż jeden filtr może obsługiwać wiele typów plików, każdy typ pliku działa tylko z jednym filtrem.
Procedura obsługi właściwości tłumaczy dane przechowywane w pliku na schemat ustrukturyzowany rozpoznawany przez program i może być dostępny dla Eksploratora Windows, usługi Windows Search i innych aplikacji. Te systemy mogą następnie wchodzić w interakcje z procedurą obsługi właściwości, aby zapisywać i odczytywać właściwości do i z pliku. Przetłumaczone dane obejmują widok szczegółów, etykietki informacji, okienko szczegółów, strony właściwości itd. Każda procedura obsługi właściwości jest skojarzona z określonym typem pliku identyfikowanym przez rozszerzenie nazwy pliku. Aby wykonać następujące czynności, potrzebna jest procedura obsługi właściwości:
- Pokaż nieindeksowane właściwości elementu w interfejsie użytkownika.
- Obsługa pisania właściwości.
Korzystanie z wyników wyszukiwania systemu Windows
W poniższych sekcjach opisano kilka sposobów korzystania z wyników usługi Windows Search:
- Wykonywanie zapytań dotyczących danych
- wykonywanie zapytań dotyczących zdalnych magazynów danych (wyszukiwanie federacyjne)
- pliki i elementy indeksowania
- indeksowanie magazynu danych
- Zarządzanie procesem indeksowania
- integrowanie systemu właściwości systemu Windows z aplikacjami Windows Search
Wykonywanie zapytań dotyczących danych
Deweloperzy piszący aplikacje na podstawie połączonego systemu Windows Search i Systemu Windows mogą uzyskiwać dostęp do plików i elementów niezależnie od typu aplikacji lub pliku. Istnieją dwa sposoby uzyskiwania dostępu do danych indeksatora przez aplikacje:
- Aplikacje komunikują się bezpośrednio z bazą danych OLE DB, wysyłając zapytania języka SQL (Structured Query Language) usługi Windows Search do dostawcy OLE DB usługi Windows Search w celu pobrania wyników. Zapytania można tworzyć ręcznie lub przy użyciu interfejsu ISearchQueryHelper w celu wygenerowania kodu SQL na podstawie słów kluczowych wyszukiwania i zaawansowanej składni zapytań (AQS).
- Aplikacje działają za pośrednictwem warstwy powłoki. Zaletą warstwy powłoki jest to, że obsługuje również inne źródła, takie jak grep. Jednak wadą jest to, że nie wszystkie funkcje indeksatora są dostępne.
Inną opcją jest użycie protokołów search-ms:// i search://, które wykonują wyszukiwania oparte na adresach URL renderowane za pośrednictwem Eksploratora Windows. Ta opcja umożliwia tworzenie najlżejszej wagi, ale nie zwraca wyników ani wyborów użytkowników z widoku wyników do aplikacji wywołującej. Ponadto, podobnie jak inne protokoły, aplikacje wyszukiwania innych firm mogą przejąć protokoły search-ms:// i search://, jeśli aplikacje są zgodne z wymaganym zestawem funkcji. Aby uzyskać więcej informacji na temat wykonywania zapytań, zobacz Querying Process in Windows Search and Querying the Index Programally.
Wykonywanie zapytań dotyczących zdalnych magazynów danych (wyszukiwanie federacyjne)
W systemie Windows 7 lub nowszym funkcja wyszukiwania federacyjnego oferuje nowego dostawcę wyszukiwania, który wysyła zapytania do zdalnych magazynów danych za pośrednictwem serwerów internetowych, za pośrednictwem protokołu OpenSearch i wylicza wyniki jako źródła danych RSS lub Atom XML. Łączniki wyszukiwania to połączenia przestrzeni nazw, które symulują zachowanie folderów przy użyciu dostawcy wyszukiwania. Aby uzyskać więcej informacji na temat federacji wyszukiwania do zdalnych magazynów danych w systemie Windows 7, zobacz Federacyjne wyszukiwanie w systemie Windows.
Indeksowanie plików i elementów
Zawartość indeksowana jest oparta na plikach i typach danych obsługiwanych za pośrednictwem dodatków zawartych w usłudze Windows Search oraz domyślnych reguł dołączania i wykluczania folderów w systemie plików. Na przykład filtry zawarte w obsłudze wyszukiwania okien ponad 200 typowych typów danych, w tym dokumentów pakietu Microsoft Office, poczty e-mail programu Microsoft Outlook (w połączeniu z procedurą obsługi protokołu MAPI), plików zwykłych tekstu, HTML i wiele innych. Aby uzyskać pełną listę obsługiwanych natywnie typów plików, zobacz Co jest zawarte windeksu.
Indeks można rozszerzyć za pomocą procedur obsługi właściwości i filtrów, aby uwidocznić zawartość i właściwości nowych formatów plików w indeksie i Eksploratorze Windows. Filtry to implementacja interfejsu IFilter. Istnieją dwa rodzaje filtrów: jeden, który współdziała z poszczególnymi elementami, takimi jak pliki, i jeden, który współdziała z kontenerami, takimi jak foldery. Filtry są wielofunkcyjne, ponieważ obsługują fragmentowanie danych, zawartość tekstową, niektóre właściwości i wiele języków.
Natomiast programy obsługi właściwości mają bardziej szczegółowy cel: uwidaczniać właściwości określonych typów plików, które są identyfikowane przez rozszerzenia nazw plików. Procedura obsługi właściwości dla typu pliku może włączyć właściwości pobierania i ustawiania oraz wyliczać właściwości skojarzone z tym typem pliku. W przeciwieństwie do filtrów programy obsługi właściwości nie obsługują chucking danych ani zawartości tekstowej, a programy obsługi właściwości nie mają możliwości wskazania języka, w jakim znajduje się właściwość tekstowa, chyba że obsługują one pisanie właściwości.
Indeksowanie magazynu danych
Indeks można rozszerzyć za pomocą procedur obsługi protokołów w celu zapewnienia dostępu do zastrzeżonych magazynów danych. Na przykład pliki i elementy zawarte w magazynach danych systemu plików (takich jak bazy danych i magazyny poczty e-mail) wymagają programu obsługi protokołu do mapowania z adresu URL do strumienia. Programy obsługi protokołów mogą również opcjonalnie określić poprawne filtry do użycia do wyodrębniania informacji ze strumienia. Filtry wyliczają adresy URL magazynu danych. Elementy są następnie indeksowane indywidualnie przy użyciu odpowiedniego filtru i/lub procedury obsługi właściwości. Aby uzyskać więcej informacji, zobacz Rozszerzanieindeksu .
Zarządzanie procesem indeksowania
Deweloperzy aplikacji mogą kontrolować zakres i częstotliwość indeksowania usługi Windows Search przy użyciu różnych interfejsów zarządzania. Te interfejsy obejmują funkcje dodawania i usuwania katalogów, które indeksator skanuje pod kątem zmian, ręcznie powiadamia indeks o zmianach danych, sprawdza stan indeksatora i wymusza ponowne indeksowanie niektórych lub wszystkich danych. Aby uzyskać więcej informacji, zobacz Zarządzanie indeksem.
Integrowanie systemu właściwości systemu Windows z aplikacjami windows Search
System właściwości systemu Windows to rozszerzalny system odczytu/zapisu definicji danych, który zapewnia jednolity sposób wyrażania metadanych dotyczących elementów powłoki. System właściwości systemu Windows w systemie Windows Vista i nowszych umożliwia przechowywanie i pobieranie metadanych dla elementów powłoki. Element powłoki to dowolny pojedynczy element zawartości, taki jak plik, folder, wiadomość e-mail lub kontakt. Właściwość jest pojedynczym elementem metadanych skojarzonym z elementem powłoki. Wartości właściwości są wyrażane jako struktura PROPVARIANT.
Obszerna lista typowych właściwości jest uwzględniona w wielu typach elementów, takich jak zdjęcia, muzyka, dokumenty, wiadomości, kontakty i pliki. Deweloperzy mogą również wprowadzać własne właściwości do platformy, jeśli żadna istniejąca właściwość nie spełnia ich potrzeb. Aby uzyskać więcej informacji na temat integrowania aplikacji z systemem właściwości systemu Windows, zobacz Developing Property Handlers.
Omówienie programów obsługi
Procedura obsługi jest obiektem modelu obiektów składowych (COM), który zapewnia funkcje elementu powłoki. Większość źródeł danych powłoki oferuje rozszerzalny system obsługi powiązań z elementami. Na przykład folder systemu plików używa systemu skojarzeń, aby wyszukać programy obsługi dla określonego typu pliku. Dla każdego typu pliku jest wymagana określona procedura obsługi. Dla typu pliku adobe Acrobat .pdf wymagany jest jeden program obsługi filtrów, na przykład inny program obsługi filtrów jest wymagany dla formatu pliku .doc itd.
Różne programy obsługi mają pewną wspólność. W systemie Windows Vista i nowszych program obsługi musi użyć jednego z następujących interfejsów, aby zainicjować program obsługi: IInitializeWithStream, IInitializeWithItemlub IItinitializeWithFile.
W poniższej tabeli wymieniono zadania deweloperów wysokiego poziomu, typ procedury obsługi wymaganej dla każdego zadania oraz link do informacji koncepcyjnych dotyczących wykonywania poszczególnych zadań.
Zadanie | Obsługi | Informacje koncepcyjne |
---|---|---|
Uzyskiwanie dostępu do właściwości pliku na potrzeby indeksowania | Procedura obsługi właściwości |
tworzenie programów obsługi właściwości właściwości System-Defined dla niestandardowych formatów plików |
Dodawanie formatów schowka dla obiektu danych (IDataObject) elementu (obiekty danych są używane w scenariuszach przeciągania i upuszczania i kopiowania/wklejania). | Procedura obsługi obiektów danych | tworzenie programów obsługi danych |
Dodawanie czasowników dla elementu, które są często wyświetlane w menu skrótów | Procedura obsługi menu skrótów |
tworzenie programów obsługi menu kontekstowego dostosowywanie menu skrótów przy użyciu czasowników dynamicznych |
Kojarzenie typu pliku z określoną ikoną | Procedura obsługi ikon | tworzenie procedur obsługi ikon |
Tworzenie arkuszy właściwości za pomocą obrazów interfejsu użytkownika i kontrolek, które umożliwiają niestandardową interakcję z typem pliku | Procedura obsługi arkusza właściwości | programy obsługi arkusza właściwości |
Włączanie typu elementu w celu obsługi scenariuszy przeciągania i upuszczania oraz kopiowania/wklejania | Procedura obsługi porzucania | transferowanie obiektów powłoki za pomocą przeciągania i upuszczania oraz schowka |
Wyodrębnianie fragmentów tekstu i właściwości dokumentu na potrzeby indeksowania | Procedura obsługi filtrów | tworzenie programów obsługi filtrów |
Indeksowanie nowego typu pliku | Procedura obsługi filtrów, procedura obsługi właściwości |
tworzenie programów obsługi filtrów tworzenie programów obsługi właściwości |
Indeksowanie zawartości magazynu danych | Procedura obsługi protokołu | tworzenie programów obsługi protokołów |
Wyświetlanie podglądu uproszczonego widoku elementu powłoki w okienku Podgląd Eksploratora Windows | Procedura obsługi w wersji zapoznawczej | programy obsługi preview |
Podawanie wyskakującego tekstu po umieszczeniu wskaźnika myszy nad obiektem interfejsu użytkownika | Procedura obsługi etykietek informacji | tworzenie programów obsługi rozszerzeń powłoki (dostosowywanie etykietki informacji) |
Dostarczanie obrazu statycznego do reprezentowania elementu powłoki | Procedura obsługi miniatur | obsługi miniatur |
W poniższej tabeli wymieniono programy obsługi i interfejsy do implementowania każdego typu programu obsługi.
Obsługi | Interfejsów |
---|---|
Procedura obsługi porzucania | IDropTarget, IDropTargetHelper, IPersistFile, IShellExtInit |
Procedura obsługi obiektów danych | IDataObject, IPersistFile |
Procedura obsługi filtrów |
IFilter |
Procedura obsługi ikon |
IExtractIcon Opcjonalnie: IPersist IPersistFile |
Procedura obsługi etykietek informacji | IQueryInfo |
Procedura obsługi w wersji zapoznawczej | IPreviewHandler |
Procedura obsługi właściwości | IPropertyStore |
Procedura obsługi protokołu |
IFilter, ISearchProtocol, IUrlAccessor Opcjonalnie: ISearchProtocol2, IUrlAccessor2, IUrlAccessor3, IUrlAccessor4 |
Procedura obsługi arkusza właściwości | IShellExtInit, IShellPropSheetExt |
Procedura obsługi menu skrótów | IContextMenu, IExplorerCommand, IShellExtInit |
Procedura obsługi miniatur | IThumbnailProvider |
Nuta
Procedura obsługi właściwości jest czasami owna jako procedura obsługi metadanych. Źródło danych powłoki jest czasami nazywane rozszerzeniem przestrzeni nazw powłoki. Procedura obsługi typów plików jest czasami nazywana procedurą obsługi rozszerzenia powłoki lub rozszerzeniem powłoki.
Aby uzyskać więcej informacji na temat tworzenia programów obsługi, zobacz Creating Shell Extension Handlers. Aby uzyskać więcej informacji o właściwościach, zobacz Windows Property System.
Wskazówki dotyczące instalatora dodatków
Podczas tworzenia instalatora dodatku należy użyć poniższych wskazówek:
- Instalator musi użyć instalatora EXE lub MSI.
- Należy podać informacje o wersji.
- Dla każdego zainstalowanego dodatku należy utworzyć wpis Dodaj/Usuń programy.
- Instalator musi przejąć wszystkie ustawienia rejestru dla określonego typu pliku lub zapisać, które rozumie bieżący dodatek.
- Jeśli poprzedni dodatek jest zastępowany, instalator powinien powiadomić użytkownika.
- Jeśli nowszy dodatek nadpisał poprzedni dodatek, użytkownik powinien mieć możliwość przywrócenia funkcjonalności poprzedniego dodatku i ponownie ustawić go jako domyślny dodatek dla tego typu pliku lub magazynu.
Uwaga dotycząca implementatorów
Przed utworzeniem procedury obsługi filtrów lub właściwości deweloperzy powinni rozważyć następujące kwestie:
- Te programy obsługi są rozszerzeniami procesów, które są ładowane do procesów, które nie są sterowane, takie jak proces demona filtru, Eksplorator Windows (wyszukiwanie grep) i hosty innych firm, takie jak Poczta systemu Windows.
- Musisz napisać bezpieczny kod, który jest wystarczająco niezawodny, aby obsługiwać dowolnie uszkodzone formy formatu pliku, które zostały utworzone w celu ataku na system.
- Dodatek nie może wyciekać zasobów, które spowodują problemy z procesami hosta.
- Dodatek nie może ulec awarii, ponieważ spowoduje to również awarię procesów hosta i spowolnienie procesu filtrowania.
- Ponieważ te programy obsługi są uruchamiane w procesie systemu w tle, muszą one działać szybko z minimalnym użyciem procesora CPU i we/wy, aby spełnić wymagania dotyczące wydajności systemu.
W związku z tym te dodatki powinny być napisane przez deweloperów z doświadczeniem w tworzeniu kodu na poziomie systemu.
Dodatkowe zasoby
- Aby uzyskać informacje na temat tworzenia źródła danych powłoki, zobacz Implementowanie podstawowych interfejsów obiektów folderów.
- W przypadku źródeł danych, które muszą używać domyślnego obiektu widoku folderu systemowego powłoki (DefView), zobacz Implementowanie widoku folderu, SHCreateShellFolderView funkcji i struktury SFV_CREATE. Źródła danych korzystające z domyślnego obiektu widoku folderu systemu powłoki (DefView) muszą implementować następujący zestaw interfejsów: IShellFolder, IShellFolder2, IPersistFolder, IPersistFolder2i (opcjonalnie) IPersistFolder3. Jeśli implementacja IShellFolder nie używa shCreateShellFolderView do utworzenia widoku DefView, obiekt widoku powłoki może wymagać IFolderView.
- ISearchFolderItemFactory jest podstawowym interfejsem dla użytkowników źródła danych powłoki znanego jako DBFolder. Aby uzyskać więcej informacji o folderze DBFolder, zobacz opis stałej STR_PARSE_WITH_PROPERTIES w Bind Context String Keys. Zobacz również Tablice skojarzeń i IPropertySystem::GetPropertyDescriptionListFromString.
- Aby uzyskać informacje na temat OLE DB, zobacz Omówienie programowania OLE DB. Aby uzyskać informacje na temat dostawcy danych programu .NET Framework dla OLE DB, zobacz dokumentację dotyczącą przestrzeni nazw System.Data.OleDb.
- Aby zapoznać się z tablicami komunikatów obsługiwanymi przez społeczność w technologiach wyszukiwania, zobacz Windows: Fora wyszukiwania.
- Aby zapoznać się z powiązanymi przykładami kodu, zobacz przykłady kodu Windows Search.
Tematy pokrewne
-
używanie kodu zarządzanego z danymi powłoki i usługą Windows Search
-
przewodnik dewelopera Windows Search