Udostępnij za pośrednictwem


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

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

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

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.

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

Windows Search — omówienie

języki obsługiwane przez usługę Windows Search

używanie kodu zarządzanego z danymi powłoki i usługą Windows Search

przewodnik dewelopera Windows Search