Aracılığıyla paylaş


Shell Uzantı İşleyicileri Oluşturma

Shell'in özellikleri kayıt defteri girdileri ve .ini dosyalarıyla genişletilebilir. Kabuğu genişletmeye yönelik bu yaklaşım basit ve birçok amaç için yeterli olsa da, sınırlıdır. Örneğin, kayıt defterini kullanarak bir dosya türü için özel bir simge belirtirseniz, bu türdeki her dosya için aynı simge görüntülenir. Kabuğun kayıt defteriyle genişletilmesi, aynı türdeki farklı dosyalara farklı simgeler atamanıza olanak tanımaz. Dosyalara sağ tıklandığında açılan Özellikleri özellik sayfası gibi Shell’in diğer yönleri, kayıt defteri ile değiştirilemez.

Kabuğu genişletmenin daha güçlü ve esnek bir yolu, kabuk uzantısı işleyicileriuygulamaktır. Bu işleyiciler, Kabuğun gerçekleştirebileceği çeşitli eylemler için uygulanabilir. Kabuk, eylemi gerçekleştirmeden önce uzantı işleyicisini sorgular ve eylemi değiştirme fırsatı verir. Kısayol menüsü uzantısı işleyicisi yaygın bir örnektir. Bir dosya türü için uygulandıysa, dosyalardan birine sağ tıklandığında sorgulanır. İşleyici daha sonra dosya türünün tamamı için aynı kümeye sahip olmak yerine dosya temelinde ek menü öğeleri belirtebilir.

Bu belgede, çeşitli Kabuk eylemlerini değiştirmenize olanak sağlayan uzantı işleyicilerinin nasıl uygulanılacağı açıklanır. Aşağıdaki işleyiciler belirli bir dosya türüyle ilişkilendirilir ve dosya temelinde belirtmenize olanak sağlar:

İşleyici Açıklama
Kısayol menü işleyicisi Dosyanın kısayol menüsü görüntülenmeden önce çağrılır. Dosya bazında kısayol menüsüne öğe eklemenize olanak tanır.
Veri işleyicisi DragShell nesnelerinde sürükle ve bırak işlemi gerçekleştirildiğinde çağrılır. Bırakma hedefine ek pano biçimleri sağlamanıza olanak tanır.
Bırakma işleyicisi Bir veri nesnesi bir dosyaya sürüklendiğinde veya bırakıldığında çağrılır. Bir dosyayı bırakma hedefine dönüştürmenizi sağlar.
Simge işleyicisi Bir dosyanın simgesi görüntülenmeden önce çağrılır. Dosyanın varsayılan simgesini dosya temelinde özel bir simgeyle değiştirmenize olanak tanır.
Özellik sayfası işleyicisi Nesnenin Özellikler özellik sayfası görüntülenmeden önce çağrılır. Sayfaları eklemenize veya değiştirmenize olanak tanır.
Küçük Resim Görüntüsü işleyicisi Öğeyi temsil eden bir görüntü sağlar.
Bilgi ipucu işleyicisi Kullanıcı fare işaretçisini nesnenin üzerine getirdiğinde açılır metin sağlar.
Meta Veri işleyicisi Bir dosyada depolanan meta verilere (özellikler) okuma ve yazma erişimi sağlar. Bu, Ayrıntılar görünümünü, bilgi ipuçlarını, özellik sayfasını ve gruplandırma özelliklerini genişletmek için kullanılabilir.

 

Diğer işleyiciler belirli bir dosya türüyle ilişkilendirilmemiştir ancak bazı Shell işlemlerinden önce çağrılır:

İşleyici Açıklama
Sütun işleyicisi Bir klasörün Ayrıntılar görünümünü görüntülemeden önce Windows Gezgini tarafından çağrılır. Ayrıntılar görünümüne özel sütunlar eklemenize olanak tanır.
Kanca İşlemcisini Kopyala Bir klasör veya yazıcı nesnesi taşınmadan, kopyalanmadan, silinmeden veya yeniden adlandırılmadan önce çağrılır. İşlemi onaylamanızı veya veto etmenizi sağlar.
sürükle ve bırak işleyicisi Sağ fare düğmesiyle bir dosya sürüklendiğinde çağrılır. Görüntülenen kısayol menüsünü değiştirmenize olanak tanır.
Simge Katmanı İşleyicisi Bir dosyanın simgesi görüntülenmeden önce çağrılır. Dosya simgesi için bir katman belirtmenizi sağlar.
Arama işleyicisi Bir arama motorunu başlatmak için çağrıldı. Başlat menüsünden veya Windows Gezgini'nden erişilebilen özel bir arama altyapısı uygulamanıza olanak tanır.

 

Belirli uzantı işleyicilerinin nasıl uygulandığıyla ilgili ayrıntılar, yukarıda listelenen bölümlerde ele alınmıştır. Bu belgenin geri kalanı, tüm Kabuk uzantısı işleyicileri için ortak olan bazı uygulama sorunlarını kapsar.

Shell Uzantısı İşleyicilerini Uygulama

Shell uzantısı işleyici nesnesinin uygulamasının büyük bir kısmı, nesnenin türüne bağlıdır. Ancak bazı yaygın öğeler vardır. Bu bölümde, tüm Shell uzantısı işleyicileri tarafından paylaşılan uygulama yönleri ele alınmaktadır.

Birçok Shell uzantı işleyicisi, işlem içinde çalışan Bileşen Nesne Modeli (COM) nesneleridir. Bunlara bir GUID atanmalı ve Kabuk Uzantısı İşleyicilerini Kaydetme bölümünde açıklandığı gibi kaydedilmelidir. DLL'ler olarak uygulanır ve aşağıdaki standart işlevleri dışarı aktarmaları gerekir:

  • DllMain. DLL'ye standart giriş noktası.
  • DllGetClassObject. Nesnenin sınıf fabrikasını açığa çıkarır.
  • DllCanUnloadNow. COM, nesnenin herhangi bir istemciye hizmet verip vermediğini belirlemek için bu işlevi çağırır. Aksi takdirde sistem DLL'yi kaldırıp ilişkili belleği boşaltabilir.

Tüm COM nesneleri gibi, Kabuk uzantısı işleyicileri de IUnknown arabirimini ve sınıf fabrikasınıuygulamalı. Çoğu uzantı işleyicisi, Windows XP veya önceki sürümlerde IPersistFile veya IShellExtInit arabirimini de uygulamalıdır. Bunlar, Windows Vista'da IInitializeWithStream, IInitializeWithItem ve IInitializeWithFile ile değiştirildi. Shell, işleyiciyi başlatmak için bu arabirimleri kullanır.

IPersistFile arabirimi aşağıdakiler tarafından uygulanmalıdır:

  • Veri işleyicileri
  • İşleyicileri bırakma

Geçmişte, IPersistFileuygulamak için de simge işleyicileri gerekiyordu, ancak bu artık doğru değil. Simge işleyicileri için IPersistFile artık isteğe bağlıdır ve IInitializeWithItem gibi diğer arabirimler tercih edilir.

IShellExtInit arabirimi aşağıdakiler tarafından uygulanmalıdır:

  • Kısayol menüsü işleyicileri
  • Sürükle ve bırak işleyicileri
  • Özellik sayfası işleyicileri

IPersistFile'i Uygulama

IPersistFile arabirimi, bir nesnenin disk dosyasından yüklenmesine veya disk dosyasına kaydedilmesine izin vermek için tasarlanmıştır. IUnknown, beş tane kendi yöntemine ve IPersist'dan devraldığı GetClassID yöntemine ek olarak altı yöntemi vardır. Kabuk uzantılarıyla, IPersist yalnızca bir Kabuk uzantısı işleyici nesnesi başlatmak için kullanılır. Diskten okuma veya diske yazma gereği genellikle olmadığından, yalnızca GetClassID ve Load yöntemleri için bir nontoken uygulama gereklidir.

Shell, önce GetClassIDçağırır ve işlev uzantı işleyici nesnesinin sınıf tanımlayıcısını (CLSID) döndürür. Kabuk daha sonra Load'ü çağırır ve iki değer iletir. İlki pszFileName, Shell'in üzerinde çalışmak üzere olduğu dosya veya klasörün adına sahip bir Unicode dizesidir. İkincisi dwModedosya erişim modunu gösterir. Normalde dosyalara erişmeye gerek olmadığından dwMode genellikle sıfırdır. yöntemi, bu değerleri daha sonra başvurmak için gereken şekilde depolar.

Aşağıdaki kod parçası, tipik bir Kabuk uzantısı işleyicisinin GetClassID ve Load yöntemlerini nasıl uyguladığını gösterir. ANSI veya Unicode işlemek için tasarlanmıştır. CLSID_SampleExtHandler uzantı işleyici nesnesinin GUID'si, CSampleExtHandler ise arabirimi uygulamak için kullanılan sınıfın adıdır. m_szFileName ve m_dwMode değişkenleri, dosyanın adını ve erişim bayraklarını depolamak için kullanılan özel değişkenlerdir.

wchar_t m_szFileName[MAX_PATH];    // The file name
DWORD m_dwMode;                  // The file access mode

CSampleExtHandler::GetClassID(CLSID *pCLSID)
{
    *pCLSID = CLSID_SampleExtHandler;
}

CSampleExtHandler::Load(PCWSTR pszFile, DWORD dwMode)
{
    m_dwMode = dwMode;
    return StringCchCopy(_szFileName, ARRAYSIZE(m_szFileName), pszFile);
}

IShellExtInit'i Uygulama

IShellExtInit arabirimi, IUnknownyanında yalnızca bir yöntem, IShellExtInit::Initialize, içerir. yöntemi, Shell'in çeşitli bilgi türlerini geçirmek için kullanabileceği üç parametreye sahiptir. geçirilen değerler işleyici türüne bağlıdır ve bazıları NULL olarak ayarlanabilir.

  • pIDFolder bir klasörün öğe tanımlayıcı listesine (PIDL) işaretçisini saklar. Özellik sayfası uzantıları için NULL. Kısayol menüsü uzantıları için, kısayol menüsü görüntülenen öğeyi içeren klasörün PIDL'sidir. Varsayılan olmayan sürükle ve bırak işleyicileri için hedef klasörün PIDL'idir.
  • pDataObject, veri nesnesinin IDataObject arabirimine bir işaretçi tutar. Veri nesnesi, CF_HDROP biçimde bir veya daha fazla dosya adını barındırıyor.
  • hRegKey dosya nesnesi veya klasör türü için bir kayıt defteri anahtarı tutar.

IShellExtInit::Initialize yöntemi dosya adını, IDataObject işaretçisini ve kayıt defteri anahtarını daha sonra kullanmak üzere depolar. Aşağıdaki kod parçası, IShellExtInit::Initializeuygulamasını gösterir. Kolaylık olması için, bu örnekte veri nesnesinin yalnızca tek bir dosya içerdiği varsayılır. Genel olarak, her birinin ayıklanması gereken birden çok dosya içerebilir.

LPCITEMIDLIST  m_pIDFolder;           //The folder's PIDL
wchar_t        m_szFile[MAX_PATH];    //The file name
IDataObject   *m_pDataObj;            //The IDataObject pointer
HKEY           m_hRegKey;             //The file or folder's registry key

STDMETHODIMP CShellExt::Initialize(LPCITEMIDLIST pIDFolder, 
                                   IDataObject *pDataObj, 
                                   HKEY hRegKey) 
{ 
    // If Initialize has already been called, release the old PIDL
    ILFree(m_pIDFolder);
    m_pIDFolder = nullptr;

    // Store the new PIDL.
    if (pIDFolder)
    {
        m_pIDFolder = ILClone(pIDFolder);
    }
    
    // If Initialize has already been called, release the old
    // IDataObject pointer.
    if (m_pDataObj)
    { 
        m_pDataObj->Release(); 
    }
     
    // If a data object pointer was passed in, save it and
    // extract the file name. 
    if (pDataObj) 
    { 
        m_pDataObj = pDataObj; 
        pDataObj->AddRef(); 
      
        STGMEDIUM   medium;
        FORMATETC   fe = {CF_HDROP, NULL, DVASPECT_CONTENT, -1, TYMED_HGLOBAL};
        UINT        uCount;

        if (SUCCEEDED(m_pDataObj->GetData(&fe, &medium)))
        {
            // Get the count of files dropped.
            uCount = DragQueryFile((HDROP)medium.hGlobal, (UINT)-1, NULL, 0);

            // Get the first file name from the CF_HDROP.
            if (uCount)
                DragQueryFile((HDROP)medium.hGlobal, 0, m_szFile, 
                              sizeof(m_szFile)/sizeof(TCHAR));

            ReleaseStgMedium(&medium);
        }
    }

    // Duplicate the registry handle. 
    if (hRegKey) 
        RegOpenKeyEx(hRegKey, nullptr, 0L, MAXIMUM_ALLOWED, &m_hRegKey); 
    return S_OK; 
}

CSampleExtHandler, arabirimi uygulamak için kullanılan sınıfın adıdır. m_pIDFolder, m_pDataObject, m_szFileNameve m_hRegKey değişkenleri, geçirilen bilgileri depolamak için kullanılan özel değişkenlerdir. Kolaylık olması için, bu örnekte veri nesnesi tarafından yalnızca bir dosya adının tutulacağı varsayılır. FORMATETC yapısı veri nesnesinden alındıktan sonra, FORMATETC yapısının medium.hGlobal üyesinden dosya adını ayıklamak için DragQueryFile kullanılır. Bir kayıt defteri anahtarı verilirse, yöntem önce RegOpenKeyEx kullanarak anahtarı açar ve ardından tanıtıcıyı m_hRegKeyatar.

Bilgi İpucu Özelleştirmesi

Bilgi ipuçlarını özelleştirmenin iki yolu vardır:

  • IQueryInfo destekleyen bir nesne uygulayın ve ardından bu nesneyi kayıt defterindeki uygun alt anahtara kaydedin (aşağıdaki Kabuk Uzantısı İşleyicilerini Kaydetme bakın).
  • Görüntülenecek belirli dosya özelliklerinin listesini veya sabit bir dize belirtin.

Ad alanı uzantısının sabit dizesini görüntülemek için, ad alanı uzantınızın {CLSID} anahtarında InfoTip adlı bir girdi oluşturun. Bu girdinin değerini, bu örnekte gösterildiği gibi görüntülemek istediğiniz değişmez değer dizesi veya bu kaynak içinde bir kaynak ve dizin belirten dolaylı bir dize olacak şekilde ayarlayın (yerelleştirme amacıyla).

HKEY_CLASSES_ROOT
   CLSID
      {CLSID}
         InfoTip = InfoTip string for your namespace extension

Bir dosya türünün sabit dizesini görüntülemek için, bu dosya türünün ProgID anahtarında InfoTip adlı bir girdi oluşturun. Bu girdinin değerini, görüntülemek istediğiniz değişmez değer dizesi veya bu örnekte gösterildiği gibi bu kaynak içinde bir kaynak ve dizin belirten dolaylı bir dize (yerelleştirme amacıyla) olarak ayarlayın.

HKEY_CLASSES_ROOT
   ProgID
      InfoTip = Resource.dll, 3

Shell'in belirli bir dosya türünün bilgi ipucunda belirli dosya özelliklerini görüntülemesini istiyorsanız, bu dosya türü için ProgID anahtarında InfoTip adlı bir girdi oluşturun. Bu girdinin değerini kurallı özellik adlarının, biçim tanımlayıcısının (FMTID)/özellik tanımlayıcısı (PID) çiftlerinin veya her ikisinin noktalı virgülle ayrılmış listesi olarak ayarlayın. Bu değerin özellik listesi dizesi olarak tanımlanması için "prop:" ile başlaması gerekir. "prop:" değerini atlarsanız, değer değişmez dize olarak görülür ve bu şekilde görüntülenir.

Aşağıdaki örnekte, propname kurallı bir özellik adıdır (System.Date gibi) ve {fmtid},pidbir FMTID/PID çiftidir.

HKEY_CLASSES_ROOT
   ProgID
      InfoTip = prop:propname;propname;{fmtid},pid;{fmtid},pid

Aşağıdaki özellik adları kullanılabilir:

Özellik Adı Açıklama Alınan Kaynak
Yazar Belgenin yazarı PIDSI_AUTHOR
Başlık Belgenin başlığı PIDSI_TITLE
Konu Konu özeti PIDSI_SUBJECT
Yorum Belge açıklamaları PIDSI_COMMENT veya klasör/sürücü özellikleri
Sayfa Sayısı Sayfa sayısı PIDSI_PAGECOUNT
İsim Dostça isim Standart klasör görünümü
Orijinal Konum Özgün dosyanın konumu Evrak Çantası klasörü ve Geri Dönüşüm Kutusu klasörü
Silinme Tarihi Dosyanın silindiği tarih Geri Dönüşüm Kutusu klasörü
Tür Dosya türü Standart klasör ayrıntıları görünümü
Boyut Dosyanın boyutu Standart klasör ayrıntıları görünümü
SyncCopyIn OriginalLocation ile aynı OriginalLocation ile aynı
Değiştirilmiş Son değiştirme tarihi Standart klasör ayrıntıları görünümü
Oluşturuldu Oluşturulma tarihi Standart klasör ayrıntıları görünümü
Erişildi Son erişim tarihi Standart klasör ayrıntıları görünümü
InFolder Dosyayı içeren dizin Belge arama sonuçları
Rütbe Arama eşleşmesinin kalitesi Belge arama sonuçları
Freespace Kullanılabilir depolama alanı Disk sürücüleri
ZiyaretSayısı Ziyaret sayısı Sık Kullanılanlar klasörü
Öznitelik Dosya Öznitelikleri Standart klasör ayrıntıları görünümü
Şirket Şirket adı PIDDSI_COMPANY
Kategori Belge kategorisi PIDDSI_KATEGORİ
Telif hakkı Medya telif hakkı PIDMSI_COPYRIGHT
HTMLBilgiİpucuDosyası HTML Bilgi İpucu dosyası Klasör için Desktop.ini dosyası

 

Kabuk Uzantısı İşleyicileri ile Windows Search'i Geliştirme

Kabuk uzantısı işleyicileri, Windows Search protokol işleyicisi tarafından sağlanan kullanıcı deneyimini geliştirmek için kullanılabilir. Bu tür geliştirmeleri etkinleştirmek için destekleyici Kabuk uzantısı işleyicisi, arama protokolü işleyicisi ile veri kaynağı olarak tümleştirilecek şekilde tasarlanmalıdır. Kabuk uzantısı işleyicisi ile tümleştirme yoluyla Windows Search protokol işleyicisini geliştirme hakkında bilgi için bkz. Simgeler, Önizlemeler ve Kısayol Menüleri Ekleme. Windows Search protokol işleyicileri hakkında daha fazla bilgi için bkz. Protokol İşleyicileri Geliştirme.

Kabuk Uzantısı İşleyicilerini Kaydetme

Shell'in kullanabilmesi için bir Kabuk uzantısı işleyici nesnesinin kaydedilmesi gerekir. Bu bölüm, kabuk uzantı işleyicisinin nasıl kaydedileceğine dair genel bir tartışmadır.

Kabuk uzantısı işleyicisini her oluşturduğunuzda veya değiştirdiğinizde, SHChangeNotifykullanarak bir değişiklik yaptığınızı sisteme bildirmeniz önemlidir, bu bildiride SHCNE_ASSOCCHANGED olayını belirtin. SHChangeNotifyçağrısı yapmazsanız, sistem yeniden başlatılana kadar değişiklik tanınmayabilir.

Tüm COM nesnelerde olduğu gibi, UUIDGEN.exegibi bir araç kullanarak işleyici için bir GUID oluşturmanız gerekir. HKEY_CLASSES_ROOT\CLSID altında, adı GUID'nin dize biçimi olan bir anahtar oluşturun. Kabuk uzantısı işleyicileri işlem içi sunucular olduğu için, GUID anahtarı altında işleyicinin DLL yoluna varsayılan değeri ayarlanmış bir InProcServer32 anahtarı oluşturmanız gerekir. Apartment iş parçacığı modelini kullanın.

Shell, Shell uzantı işleyicisini içerebilecek bir eylem gerçekleştirdiğinde, uygun kayıt defteri anahtarını kontrol eder. Bir uzantı işleyicisinin kayıtlı olduğu anahtar, ne zaman çağrılacağını denetler. Örneğin, Kabuk birdosya türünün üyesi için bir kısayol menüsü görüntülediğinde adlı bir kısayol menüsü işleyicisinin olması yaygın bir uygulamadır. Bu durumda işleyici, dosya türünün ProgID anahtarı altında kaydedilmelidir.

İşleyici Adları

Kabuk uzantısı işleyicisini etkinleştirmek için, ProgID (dosya türleri için) veya Önceden Tanımlanmış Kabuk Nesneleriiçin Kabuk nesne türü adının ShellEx alt anahtarı altında, işleyici alt anahtar adıyla bir alt anahtar oluşturun.

Örneğin, MyProgram.1 için bir kısayol menüsü uzantısı işleyicisi kaydetmek istiyorsanız, aşağıdaki alt anahtarı oluşturarak başlarsınız:

HKEY_CLASSES_ROOT
   MyProgram.1
      ShellEx
         ContextMenuHandlers

Aşağıdaki işleyiciler için, adı Shell uzantısının CLSID'sinin dize sürümü olan "İşleyici Alt Anahtarı adı" anahtarının altında bir alt anahtar oluşturun. Birden çok alt anahtar oluşturularak işleyici alt anahtarı adı altında birden çok uzantı kaydedilebilir.

İşleyici Arayüz İşleyici Alt Anahtar Adı
Kısayol menüsü işleyicisi IContextMenu Bağlam Menüsü İşleyicileri
Copyhook işleyicisi ICopyHook CopyHookHandlers
Sürükle ve bırak işleyicisi IContextMenu DragDropHandlers
Özellik sayfası işleyicisi IShellPropSheetExt ÖzellikSayfasıİşleyicileri
Sütun sağlayıcısı işleyicisi (Windows Vista'da kullanım dışı) IColumnProvider ColumnHandlers

 

Aşağıdaki işleyiciler için, "İşleyici Alt Anahtarı Adı" anahtarının varsayılan değeri, Kabuk uzantısının CLSID'sinin dize sürümüdür. Bu işleyiciler için yalnızca bir uzantı kaydedilebilir.

İşleyici Arayüz İşleyici Alt Anahtarı Adı
Veri işleyicisi IDataObject DataHandler
Bırakma işleyicisi IDropTarget DropHandler
Simge işleyicisi IExtractIconA/W IconHandler
Görüntü işleyicisi IExtractImage {BB2E617C-0920-11d1-9A0B-00C04FC2D6C1}
Küçük resim görüntü işleyicisi IThumbnailProvider {E357FCCD-A995-4576-B01F-234630154E96}
Bilgi ipucu işleyicisi IQueryInfo {00021500-0000-0000-C000-000000000046}
Kabuk bağlantısı (ANSI ) IShellLinkA {000214EE-0000-0000-C000-000000000046}
Kabuk bağlantısı (UNICODE) IShellLinkW {000214F9-0000-0000-C000-000000000046}
Yapılandırılmış depolama IStorage {0000000B-0000-0000-C000-000000000046}
Meta veriler IPropertyStore Özellik İşleyici
Meta veriler IPropertySetStorage (Windows Vista'da kullanım dışı) PropertyHandler
Başlat Menüsüne Sabitle IStartMenuPinnedList {a2a9545d-a0c2-42b4-9708-a0b2badd77c8}
Görev Çubuğuna Sabitle {90AA3A4E-1CBA-4233-B8BB-535773D48449}

 

Başlat Menüsüne Sabitle eklemek için belirtilen alt anahtarlar ve bir öğenin kısayol menüsüne Görev Çubuğuna Sabitle yalnızca IsShortCut girdisini içeren dosya türleri için gereklidir.

Windows Vista'da sütun sağlayıcısı işleyicileri desteği kaldırıldı. Ayrıca, Windows Vista'da IPropertySetStorage, IPropertyStorelehine kullanım dışı bırakılmıştır.

IExtractImage desteklenmeye devam etse de, IThumbnailProvider Windows Vista ve sonraki sürümler için tercih edilir.

Önceden Tanımlanmış Kabuk Nesneleri

Kabuk, HKEY_CLASSES_ROOT altında dosya türleriyle aynı şekilde genişletilebilen ek nesneler tanımlar. Örneğin, tüm dosyalar için bir özellik sayfası işleyicisi eklemek için PropertySheetHandlers anahtarına kaydolabilirsiniz.

HKEY_CLASSES_ROOT
   *
      shellex
         PropertySheetHandlers

Aşağıdaki tablo, uzantı işleyicilerinin kaydedilebileceği çeşitli HKEY_CLASSES_ROOT alt anahtarlarını verir. Listelenen alt anahtarların tümü altında birçok uzantı işleyicisinin kaydedilemeyeceğini unutmayın. Diğer ayrıntılar için belirli işleyicinin belgelerine bakın.

Alt anahtar Açıklama Olası İşleyiciler Sürüm
* Tüm dosyalar Kısayol Menüsü, Özellik Sayfası, Fiiller (aşağıya bakın) Tüm
AllFileSystemObjects Tüm dosyalar ve dosya klasörleri Kısayol Menüsü, Özellik Sayfası, Fiiller 4.71
Klasör Tüm klasörler Kısayol Menüsü, Özellik Sayfası, Fiiller Tüm
Dizin Dosya klasörleri Kısayol Menüsü, Özellik Sayfası, Fiiller Tüm
Directory\Background Dosya klasörü arka planı Yalnızca Kısayol Menüsü 4.71
Sürücü Bilgisayarım'daki "C:\" gibi tüm sürücüler Kısayol Menüsü, Özellik Sayfası, Fiiller Tüm
Tüm ağ (Ağ Yerlerim altında) Kısayol Menüsü, Özellik Sayfası, Fiiller Tüm
Network\Type\# # türüne ait tüm nesneler (aşağıya bakın) Kısayol menüsü, Özellik Sayfası, Fiiller 4.71
NetShare Tüm ağ paylaşımları Kısayol menüsü, Özellik Sayfası, Fiiller 4.71
NetServer Tüm ağ sunucuları Kısayol menüsü, Özellik Sayfası, Fiiller 4.71
network_provider_name "network_provider_name" ağ sağlayıcısı tarafından sağlanan tüm nesneler Kısayol menüsü, Özellik Sayfası, Fiiller Tüm
Yazıcılar Tüm yazıcılar Kısayol Menüsü, Özellik Sayfası Tüm
AudioCD CD sürücüsünde Ses CD'si Yalnızca fiiller Tüm
DVD DVD sürücüsü (Windows 2000) Kısayol Menüsü, Özellik Sayfası, Fiiller 4.71

 

Notlar:

  • Dosya klasörü arka plan kısayol menüsüne, bir dosya klasörünün içinde sağ tıklayarak erişilir, ancak klasörün içeriklerinden herhangi birinin üzerine erişemezsiniz.
  • "Fiiller", HKEY_CLASSES_ROOT\Alt Anahtar\Kabuk\Fiil altında kaydedilen özel komutlardır.
  • \Türü\# için , "#" ondalık olarak bir ağ sağlayıcısı türü kodudur. Ağ sağlayıcısı türü kodu, bir ağ türünün yüksek sözcüğüdür. Ağ türlerinin listesi Winnetwk.h üst bilgi dosyasında (WNNC_NET_* değerler) verilir. Örneğin, WNNC_NET_SHIVA 0x00330000 olduğundan ilgili tür anahtarı HKEY_CLASSES_ROOT\\Türü\51 olacaktır.
  • "network_provider_name", WNetGetProviderNametarafından belirtilen bir ağ sağlayıcısı adıdır ve boşluklar alt çizgiye dönüştürülür. Örneğin, Microsoft Ağ sağlayıcısı yüklüyse, sağlayıcı adı "Microsoft Windows Network" olur ve karşılık gelen network_provider_nameMicrosoft_Windows_Networkolarak belirlenir.

Uzantı İşleyicisi Kaydı Örneği

Belirli bir işleyiciyi etkinleştirmek için, uzantı işleyici türü anahtarı altında işleyicinin adıyla bir alt anahtar oluşturun. Shell işleyicinin adını kullanmaz, ancak bu tür alt anahtar altındaki diğer tüm adlardan farklı olmalıdır. Ad alt anahtarının varsayılan değerini işleyicinin GUID'sinin dize biçimine ayarlayın.

Aşağıdaki örnekte, örnek bir .myp dosya türü kullanılarak kısayol menüsü ve özellik sayfası uzantısı işleyicilerini etkinleştiren kayıt defteri girdileri gösterilmektedir:

HKEY_CLASSES_ROOT
   .myp
      (Default) = MyProgram.1
   CLSID
      {00000000-1111-2222-3333-444444444444}
         InProcServer32
            (Default) = C:\MyDir\MyCommand.dll
            ThreadingModel = Apartment
      {11111111-2222-3333-4444-555555555555}
         InProcServer32
            (Default) = C:\MyDir\MyPropSheet.dll
            ThreadingModel = Apartment
   MyProgram.1
      (Default) = MyProgram Application
      Shellex
         ContextMenuHandler
            MyCommand
               (Default) = {00000000-1111-2222-3333-444444444444}
         PropertySheetHandlers
            MyPropSheet
               (Default) = {11111111-2222-3333-4444-555555555555}

Bu bölümde açıklanan kayıt yordamı tüm Windows sistemleri için izlenmelidir.

Uzantıların Uygulanması için Yönerge In-Process