Geliştirme Platformu Olarak Windows Search
Yeni dosya biçimlerinin ve veri depolarının içeriklerini ve özelliklerini dizine almak için Microsoft Windows Search'ün eklentilerle genişletilmesi gerekir.
Yeni dosya biçimlerinin ve veri depolarının üçüncü taraf bir geliştiricisinin bu biçimleri ve depoları Windows Gezgini'nde sorgu sonuçlarında görünmesini sağlamak için önce geliştiricinin aşağıdaki üç şeyi yapması gerekir:
- Shell ad alanını genişletmek için bir Shell veri kaynağı uygulayın.
- Bir veri deposundaki öğeleri kullanıma sunma (yeni bir veri deposu ekliyorlarsa, dizine alınması gerekeceğinden).
- Windows Search'un dizin oluşturma verilerine erişebilmesi için bir protokol işleyicisi geliştirin.
Bu konu aşağıdaki gibi düzenlenmiştir:
- Başlarken
- Arama Geliştirme Senaryolarına Genel Bakış
- İşleyicilere Genel Bakış
- Eklenti Yükleyicisi Yönergeleri
- Uygulayıcılara Notu
- ek kaynaklar
- İlgili konular
Başlarken
Bir Windows Search uygulaması oluşturmaya başlamadan önce, bunu yapmak için tercih edilen yöntemin bir Shell veri kaynağından geçtiğini unutmayın. Shell veri kaynağı, Shell ad alanını genişletir ve bir veri deposundaki öğeleri kullanıma sunar. Daha sonra veri deposundaki öğeler, bir protokol işleyicisi kullanılarak Windows Search sistemi tarafından dizine eklenebilir. Tam Kabuk işlevine erişim sağladığından, Kabuk veri kaynağı uygulayarak Windows Search'e erişmek için bu dolaylı yaklaşım tercih edilir. Bu şekilde yapmak, makul bir kullanıcı deneyimi sağlar.
Sorgu sonuçlarının Windows Gezgini'nde görünmesini istiyorsanız, dizini genişletmek için bir protokol işleyicisi oluşturabilmeniz için önce bir Kabuk veri kaynağı uygulamanız gerekir. Ancak, tüm sorgular program aracılığıyla (örneğin OLE DB aracılığıyla) ve Shell yerine uygulamanın kodu tarafından yorumlanacaksa, kabuk ad alanı yine de tercih edilir ancak gerekli değildir.
Windows'un veritabanlarındaki öğeler veya özel dosya türleri gibi dosya içeriği hakkında bilgi edinmesi için bir protokol işleyicisi gereklidir. Windows Search dosyanın adını ve özelliklerini dizine alabilir ancak Windows' un dosyanın içeriği hakkında hiçbir bilgisi yoktur. Sonuç olarak, bu tür öğeler Windows Kabuğu'nda dizine alınamaz veya kullanıma sunulmaz. Özel bir protokol işleyicisi uygulayarak bu öğeleri kullanıma sağlayabilirsiniz. Ulaşmaya çalıştığınız geliştirici senaryosu tarafından tanımlanan işleyicilerin listesi için bkz. İşleyicilere Genel Bakış.
Arama Geliştirme Senaryolarına Genel Bakış
Windows Search'teki en yaygın geliştirme senaryoları şunlardır:
Yeni Veri Deposu Ekleme
Yalnızca dizine eklenecek yeni bir veri deposu ekliyorsanız Windows Search için bir Kabuk veri deposuna ihtiyacınız vardır. Veri deposu, Shell veri kaynağı kullanılarak Kabuk programlama modeline kapsayıcı olarak gösterilebilen bir veri deposudur. Daha sonra bir veri deposundaki öğeler, bir protokol işleyicisi kullanılarak Windows Search sistemi tarafından dizine eklenebilir. Protokol işleyicisi, bir içerik kaynağına yerel biçiminde erişmek için protokolü uygular. ISearchProtocol ve ISearchProtocol2 arabirimleri, dizine alınabilen veri kaynaklarını genişletmek üzere özel bir protokol işleyicisi uygulamak için kullanılır. Kabuk veri kaynağı oluşturma hakkında bilgi için bkz. Temel Klasör Nesne Arabirimlerini Uygulama.
Yeni Dosya Biçimi Ekleme
Yeni bir özel dosya biçimi eklerseniz, her ikisini birden değil, bir filtre işleyicisi veya özellik işleyicisi geliştirmeniz gerekir. Filtre, IFilter arabiriminin bir uygulamasıdır. Belirli bir dosya türündeki dosyaları açar ve dizin oluşturucu için özellikleri ve metin öbeklerini filtreler. Filtreler dosya adı uzantıları, MIME türleri veya sınıf tanımlayıcıları (CLSID) ile belirtildiği gibi dosya türleriyle ilişkilendirilir. Bir filtre birden çok dosya türünü işleyebilir, ancak her dosya türü yalnızca bir filtreyle çalışır.
Özellik işleyicisi, bir dosyada depolanan verileri Tarafından tanınan ve Windows Gezgini, Windows Search ve diğer uygulamalar tarafından erişilebilen yapılandırılmış bir şemaya çevirir. Bu sistemler daha sonra bir dosyaya ve dosyadan özellik yazmak ve okumak için özellik işleyicisi ile etkileşimde bulunabilir. Çevrilen veriler ayrıntılar görünümünü, bilgi ipuçlarını, ayrıntılar bölmesini, özellik sayfalarını vb. içerir. Her özellik işleyicisi, dosya adı uzantısıyla tanımlanan belirli bir dosya türüyle ilişkilendirilir. Aşağıdakileri yapmak için bir özellik işleyicisine ihtiyacınız vardır:
- Kullanıcı arabiriminde dizine alınamayan öğe özelliklerini gösterin.
- Özellik yazma desteği.
Windows Arama Sonuçlarını Kullanma
Aşağıdaki bölümlerde Windows Search sonuçlarını kullanmanın çeşitli yolları açıklanmaktadır:
- Veri sorgulama
- Uzak veri depolarını sorgulama (Federasyon Araması)
- Dizin oluşturma dosyaları ve öğeleri
- Veri deposu dizin oluşturma
- Dizin oluşturma işlemini yönetme
- Windows Özellik Sistemini Windows Search uygulamalarıyla tümleştirme
Verileri Sorgulama
Birleşik Windows Search ve Windows özellik sisteminin üzerine uygulama yazan geliştiriciler, uygulama veya dosya türünden bağımsız olarak dosyalara ve öğelere erişebilir. Uygulamaların dizin oluşturucu verilerine erişmesinin iki yolu vardır:
- Uygulamalar sonuçları almak için Windows Search Yapılandırılmış Sorgu Dili (SQL) sorgularını Windows Search OLE DB sağlayıcısına göndererek OLE DB ile doğrudan iletişim kurar. Sorgular el ile veya arama anahtar sözcüklerinden SQL oluşturmak için ISearchQueryHelper arabirimi ve Gelişmiş Sorgu Söz Dizimi (AQS) kullanılarak oluşturulabilir.
- Uygulamalar Kabuk katmanında çalışır. Kabuk katmanının avantajı, grep gibi diğer kaynakları da desteklemesidir. Ancak, dezavantajı tüm dizin oluşturucu özelliklerinin mevcut olmamasıdır.
Bir diğer seçenek de Windows Gezgini aracılığıyla işlenen URL tabanlı aramaları yürüten search-ms:// ve search:// protokollerini kullanmaktır. Bu seçenek en hafif geliştirmeyi etkinleştirir, ancak sonuç görünümünden sonuçları veya kullanıcı seçimlerini çağıran uygulamaya döndürmez. Ayrıca, diğer protokoller gibi üçüncü taraf arama uygulamaları da, uygulamalar gerekli özellik kümesine uygunsa search-ms:// ve search:// protokollerini devralabilir. Sorgulama hakkında daha fazla bilgi için bkz. Windows Search'da Sorgulama İşlemi ve Program Aracılığıyla Dizin Sorgulama.
Uzak Veri Depolarını Sorgulama (Federasyon Araması)
Windows 7 ve sonraki sürümlerde federasyon araması, uzak veri depolarını web sunucuları aracılığıyla, OpenSearch protokolü aracılığıyla sorgulayan ve sonuçları RSS veya Atom XML akışları olarak numaralandıran yeni bir arama sağlayıcısı sunar. Arama Bağlayıcıları, bir arama sağlayıcısı kullanarak klasör davranışını simüle eden ad alanı birleşimleridir. Windows 7'de uzak veri depolarına federasyon araması yapma hakkında daha fazla bilgi için bkz. Windows 'da Federasyon Arama'yı.
Dosya ve Öğelerin Dizinini Oluşturma
Dizine alınan içerik, Windows Search'te bulunan eklentiler aracılığıyla desteklenen dosya ve veri türlerini ve dosya sistemindeki klasörler için varsayılan ekleme ve dışlama kurallarını temel alır. Örneğin, Pencere Arama'ya eklenen filtreler Microsoft Office belgeleri, Microsoft Outlook e-postası (MAPI protokol işleyicisi ile birlikte), düz metin dosyaları, HTML ve daha birçok yaygın veri türünü destekler. Yerel olarak desteklenen dosya türlerinin tam listesi için bkz. dizin dahil edilenler.
Dizin, yeni dosya biçimlerinin içeriğini ve özelliklerini dizine ve Windows Gezgini'ne göstermek için özellik işleyicileri ve filtrelerle genişletilebilir. Filtreler, IFilter arabiriminin bir uygulamasıdır. İki tür filtre vardır: dosyalar gibi tek tek öğelerle etkileşim kuran ve klasörler gibi kapsayıcılarla etkileşim kuran filtreler. Filtreler, öbekleme verilerini, metin içeriğini, bazı özellikleri ve birden çok dili desteklediği için çok amaçlıdır.
Buna karşılık, özellik işleyicilerinin daha belirli bir amacı vardır: dosya adı uzantıları tarafından tanımlanan belirli dosya türlerinin özelliklerini kullanıma sunma. Bir dosya türü için özellik işleyicisi, alma ve ayarlama özelliklerini etkinleştirebilir ve bu dosya türüyle ilişkili özellikleri numaralandırabilir. Filtrelerden farklı olarak, özellik işleyicileri veri veya metin içeriğinin atılması desteklenmez ve özellik işleyicileri, yazma özelliklerini desteklemedikleri sürece bir metin özelliğinin hangi dilde olduğunu göstermenin hiçbir yolu yoktur.
Veri Deposu dizini oluşturma
Dizin, özel veri depolarına erişim sağlamak için protokol işleyicileriyle genişletilebilir. Örneğin, dosya sistemi olmayan veri depolarında (veritabanları ve e-posta depoları gibi) bulunan dosya ve öğeler, URL'den bir akışa eşlemek için bir protokol işleyicisi gerektirir. Protokol işleyicileri isteğe bağlı olarak bir akıştan bilgi ayıklamak için kullanılacak doğru filtreleri de belirleyebilir. Filtreler, veri deposu URL'lerini numaralandırır. Öğeler daha sonra uygun filtre ve/veya özellik işleyicisi kullanılarak ayrı ayrı dizinlenir. Daha fazla bilgi için bkz. dizin genişletme.
Dizin Oluşturma İşlemini Yönetme
Uygulama geliştiricileri, çeşitli yönetim arabirimlerini kullanarak Windows Search dizin oluşturmanın kapsamını ve sıklığını denetleyebilir. Bu arabirimler, dizin oluşturucunun değişiklik taraması yaptığı dizinleri ekleme ve kaldırma, verilerdeki değişiklikleri dizine el ile bildirme, dizin oluşturucunun durumunu denetleme ve verilerin bir kısmını veya tümünü yeniden dizine almaya zorlama işlevlerini içerir. Daha fazla bilgi için bkz. dizin yönetme.
Windows Özellik Sistemini Windows Search Uygulamalarıyla Tümleştirme
Windows Özellik Sistemi, Kabuk öğeleri hakkında meta verileri tekdüzen bir şekilde ifade etmenin tekdüzen bir yolunu sağlayan genişletilebilir bir veri tanımları okuma/yazma sistemidir. Windows Vista ve sonraki sürümlerde Windows Özellik sistemi, Kabuk öğeleri için meta verileri depolamanıza ve almanıza olanak tanır. Kabuk öğesi, dosya, klasör, e-posta veya kişi gibi tek bir içerik parçasıdır. Özellik, bir Shell öğesiyle ilişkilendirilmiş tek bir meta veri parçasıdır. Özellik değerleri PROPVARIANT yapısı olarak ifade edilir.
Fotoğraflar, müzik, belgeler, iletiler, kişiler ve dosyalar gibi birçok yaygın öğe türü için yaygın özelliklerin kapsamlı bir listesi bulunur. Geliştiriciler, mevcut bir özelliğin ihtiyaçlarını karşılamaması durumunda platforma kendi özelliklerini de tanıtabilir. Uygulamaları Windows özellik sistemiyle tümleştirme hakkında daha fazla bilgi için bkz. Özellik İşleyicileri Geliştirme.
İşleyicilere Genel Bakış
İşleyici, Bir Kabuk öğesi için işlevsellik sağlayan bir Bileşen Nesne Modeli (COM) nesnesidir. Çoğu Kabuk veri kaynağı, işleyicileri öğelere bağlamak için genişletilebilir bir sistem sunar. Örneğin, dosya sistemi klasörü, belirli bir dosya türünün işleyicilerini aramak için ilişkilendirme sistemini kullanır. Her dosya türü için belirli bir işleyici gereklidir. Adobe Acrobat .pdf dosya türü için bir filtre işleyicisi gereklidir; örneğin, .doc dosya biçimi için başka bir filtre işleyicisi vb. gereklidir.
Farklı işleyicilerin bazı ortaklıkları vardır. Windows Vista ve sonraki sürümlerde, tüm işleyiciler işleyiciyi başlatmak için aşağıdaki arabirimlerden birini kullanmalıdır: IInitializeWithStream, IInitializeWithItemveya IItinitializeWithFile.
Aşağıdaki tabloda, her görev için gereken işleyici türü olan üst düzey geliştirici görevleri listelenmiştir ve her görevin nasıl gerçekleştirilecekleri hakkında kavramsal bilgilere bir bağlantı sağlanır.
Görev | Işleyicisi | Kavramsal bilgiler |
---|---|---|
Dizin oluşturma için bir dosyanın özelliklerine erişme | Özellik işleyicisi | özellik işleyicileri geliştirme Özel Dosya Biçimleri içinSystem-Defined Özellikleri |
Bir öğenin veri nesnesi (IDataObject) için pano biçimleri ekleme (Veri nesneleri sürükle ve bırak ve kopyala/yapıştır senaryolarında kullanılır.) | Veri nesnesi işleyicisi | Veri İşleyicileri Oluşturma |
Kısayol menüsünde yaygın olarak görüntülenen bir öğe için fiil ekleme | Kısayol menüsü işleyicisi | bağlam menüsü işleyicileri oluşturma Dinamik Fiiller Kullanarak Kısayol Menüsünü Özelleştirmeyi |
Dosya türünü belirli bir simgeyle ilişkilendirme | Simge işleyicisi | Simge İşleyicileri Oluşturma |
Bir dosya türüyle özel etkileşime izin veren kullanıcı arabirimi resimleri ve denetimleriyle özellik sayfaları oluşturma | Özellik sayfası işleyicisi | Özellik Sayfası İşleyicileri |
Öğe türünü sürükleyip bırakma ve kopyalama/yapıştırma senaryolarını destekleyecek şekilde etkinleştirme | Bırakma işleyicisi | Sürükle ve Bırak ve Pano ile Kabuk Nesnelerini Aktarma |
Dizin oluşturma için metin öbeklerini ve belge özelliklerini ayıklama | Filtre işleyicisi | Filtre İşleyicileri Geliştirme |
Yeni dosya türünün dizinini oluşturma | Filtre işleyicisi, özellik işleyicisi |
Filtre İşleyicileri Geliştirme özellik işleyicileri geliştirme |
Veri deposunun içeriğini dizine ekleme | Protokol işleyicisi | Protokol İşleyicileri Geliştirme |
Windows Gezgini önizleme bölmesinde Kabuk öğesinin basitleştirilmiş görünümünü önizleme | Önizleme işleyicisi | Önizleme İşleyicileri |
Fare kullanıcı arabirimi nesnesinin üzerine geldiğinde açılan metin sağlama | Bilgi ipucu işleyicisi | Kabuk Uzantısı İşleyicileri Oluşturma (Bilgi İpucu Özelleştirmesi) |
Shell öğesini temsil etmek için statik görüntü sağlama | Küçük resim işleyicisi | Küçük Resim İşleyicileri |
Aşağıdaki tabloda işleyiciler ve her işleyici türünü uygulamaya yönelik arabirimler listeleniyor.
Işleyicisi | Arabirim |
---|---|
Bırakma işleyicisi | IDropTarget, IDropTargetHelper, IPersistFile, IShellExtInit |
Veri nesnesi işleyicisi | IDataObject, IPersistFile |
Filtre işleyicisi |
IFilter |
Simge işleyicisi |
IExtractIcon İsteğe bağlı: IPersistIPersistFile |
Bilgi ipucu işleyicisi | IQueryInfo |
Önizleme işleyicisi | IPreviewHandler |
Özellik işleyicisi | IPropertyStore |
Protokol işleyicisi |
IFilter, ISearchProtocol, IUrlAccessor İsteğe bağlı: ISearchProtocol2, IUrlAccessor2, IUrlAccessor3, IUrlAccessor4 |
Özellik sayfası işleyicisi | IShellExtInitIShellPropSheetExt |
Kısayol menüsü işleyicisi | IContextMenu, IExplorerCommand, IShellExtInit |
Küçük resim işleyicisi | IThumbnailProvider |
Not
Özellik işleyicisi bazen meta veri işleyicisi olarak esnetilir. Kabuk veri kaynağı bazen Shell ad alanı uzantısı olarak bilinir. Dosya türü işleyicisi bazen Kabuk uzantısı işleyicisi veya Kabuk uzantısı olarak bilinir.
İşleyici oluşturma hakkında daha fazla bilgi için bkz. Kabuk Uzantısı İşleyicileri Oluşturma. Özellikler hakkında daha fazla bilgi için bkz. Windows Özellik Sistemi.
Eklenti Yükleyicisi Yönergeleri
Eklenti yükleyicisi oluştururken aşağıdaki yönergeleri kullanın:
- Yükleyici exe veya MSI yükleyicisini kullanmalıdır.
- Sürüm notları sağlanmalıdır.
- Yüklenen her eklenti için Program Ekle/Kaldır girdisi oluşturulmalıdır.
- Yükleyici, geçerli eklentinin anladığı belirli bir dosya türü veya deposu için tüm kayıt defteri ayarlarını devralmalıdır.
- Önceki bir eklentinin üzerine yazılıyorsa yükleyicinin kullanıcıya bildirmesi gerekir.
- Daha yeni bir eklenti önceki bir eklentinin üzerine yazıldıysa, kullanıcı önceki eklentinin işlevselliğini geri yükleyip bu dosya türü veya deposu için yeniden varsayılan eklenti haline getirebilmelidir.
Uygulayıcılara Not
Bir filtre veya özellik işleyicisi oluşturmadan önce geliştiriciler aşağıdakileri göz önünde bulundurmalıdır:
- Bu işleyiciler filtre daemon işlemi, Windows Gezgini (grep araması) ve Windows Mail gibi üçüncü taraf konaklar gibi denetlemediğiniz işlemlere yüklenen işlem içi uzantılardır.
- Sisteme saldırmak için oluşturulan dosya biçiminizin rastgele bozuk formlarını işleyecek kadar sağlam bir güvenli kod yazmanız gerekir.
- Eklentiniz konak işlemleri için sorun üretecek kaynakları sızdırmamalıdır.
- Bu, konak işlemlerini de kilitleyip filtreleme işlemini yavaşlatacağı için eklentinizin kilitlenmemesi gerekir.
- Bu işleyiciler bir arka plan sistemi işleminde çalıştırıldığından, sistemin performans gereksinimlerini karşılamak için en az CPU ve G/Ç tüketerek hızlı bir şekilde performans göstermeleri gerekir.
Bu nedenle, bu eklentiler sistem düzeyinde kod oluşturma konusunda uzman geliştiriciler tarafından yazılmalıdır.
Ek Kaynaklar
- Kabuk veri kaynağı oluşturma hakkında bilgi için bkz. Temel Klasör Nesne Arabirimlerini Uygulama.
- Kabuk Varsayılan Sistem Klasörü Görünümü Nesnesini (DefView) kullanması gereken veri kaynakları için bkz. Klasör GörünümüUygulama, SHCreateShellFolderView işlevi ve SFV_CREATE yapısı. Kabuk Varsayılan Sistem Klasörü Görünüm Nesnesi 'ni (DefView) kullanan veri kaynaklarının şu arabirim kümesini uygulaması gerekir: IShellFolder, IShellFolder2, IPersistFolder, IPersistFolder2ve (isteğe bağlı olarak) IPersistFolder3. IShellFolder uygulamanız DefView oluşturmak için SHCreateShellFolderView kullanmıyorsa, Kabuk görünümü nesnesinin IFolderViewgerekebilir.
- ISearchFolderItemFactory, DBFolder olarak bilinen Kabuk veri kaynağının tüketicileri için birincil arabirimdir. DBFolder hakkında daha fazla bilgi için bağlama bağlam dizesi anahtarlarıSTR_PARSE_WITH_PROPERTIES sabitinin açıklamasına bakın. Ayrıca bkz. İlişkilendirme Dizileri ve IPropertySystem::GetPropertyDescriptionListFromString.
- OLE DB hakkında bilgi için bkz. OLE DB Programlamaya Genel Bakış. OLE DB için .NET Framework Veri Sağlayıcısı hakkında bilgi için system.data.oledb ad alanı belgelerine bakın.
- Arama teknolojileriyle ilgili topluluk tarafından desteklenen ileti panoları için bkz. Windows: Search Forumları.
- İlgili kod örnekleri için bkz. Windows Arama Kodu Örnekleri.
İlgili konular
-
Windows Search Tarafından Desteklenen Dilleri
-
Kabuk Verileri ve Windows Search ile Yönetilen Kod Kullanma