Aracılığıyla paylaş


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

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:

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.

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

Windows Search'e Genel Bakış

Windows Search Tarafından Desteklenen Dilleri

Kabuk Verileri ve Windows Search ile Yönetilen Kod Kullanma

Windows Search Geliştirici Kılavuzu