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.
-
Kabuk Uzantısı İşleyicilerini Uygulama
- IPersistFile'i Uygulama
- IShellExtInit'i Uygulamak
- Bilgi İpucu Özelleştirme
- Kabuk Uzantısı İşleyicileri ile Windows Aramasını Geliştirme
- Kabuk Uzantısı İşleyicilerini Kaydetme
- İlgili konular
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 |
Ağ | 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.
- Ağ\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\Ağ\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.
İlgili konular