共用方式為


屬性表處理程式

當使用者以滑鼠右鍵按下Shell物件時,通常顯示的快捷方式選單會包含 屬性 專案。 選取該專案會啟動屬性表,讓用戶能夠檢視對象的屬性,而且在某些情況下會修改該物件的屬性。 您可以實作並註冊 屬性表處理程式,來自定義此屬性表。

建立殼層延伸模塊處理程式中討論實作和註冊 Shell 延伸模組處理程式的一般程式。 本檔著重於屬性表處理程式特有的實作層面。

屬性表處理程序的運作方式

下圖顯示 Windows XP 文字檔的 Properties 屬性表。

屬性表

此圖顯示針對任何檔案顯示的預設 Properties 屬性表。 對於許多這類屬性表,您可以實作和註冊屬性表處理程式,將一或多個頁面新增至屬性表。

屬性表處理程式最常註冊 檔案類型。 每個處理程式都可以將一個自定義頁面新增至 類別的 Properties 屬性表。 這些頁面通常會讓使用者存取特定文件類型特有的屬性。 例如,包含文字文件的檔類型可以顯示列出標題和作者的頁面,以及文件的摘要。 這種類型的屬性表處理程式的特殊案例是用來將頁面新增至掛接磁碟驅動器的 Properties 屬性表。

屬性表處理程式的另一個用途是取代 [控制面板] 應用程式所顯示之屬性表中的頁面。 例如,滑鼠製造商可以使用屬性表處理程式,將控制面板 滑鼠屬性 屬性表上 按鈕 頁面取代為其滑鼠特性所自定義的頁面。

如同所有 Shell 擴充處理程式,屬性表處理程式都是以 DLL 實作的同進程元件物件模型 (COM) 物件。 除了 IUnknown以外,它們還必須匯出兩個介面:IShellExtInitIShellPropSheetExt

殼層會使用 IShellExtInit 介面來初始化處理程式。 當殼層呼叫 IShellExtInit::Initialize時,它會傳入具有物件名稱的數據物件,以及包含檔案之資料夾之專案標識符清單 (PIDL) 的指標。 hRegKey 參數不會與屬性表處理程式搭配使用。 IShellExtInit::Initialize 方法必須從數據物件擷取檔名,並儲存名稱和資料夾的 PIDL 以供稍後使用。 如需進一步的詳細數據,請參閱 建立殼層擴充處理程式實作 IShellExtInit 一節。

作業的其餘部分會透過處理程式的 IShellPropSheetExt 介面進行。 如果屬性表與文件類型相關聯,Shell 會呼叫 IShellPropSheetExt::AddPages,讓處理程式將頁面新增至屬性表。 如果屬性表與控制面板應用程式相關聯,Shell 會呼叫 IShellPropSheetExt::ReplacePage,讓處理程式取代頁面。

註冊及實作已掛接磁碟驅動器的屬性表處理程式

每個掛接的磁碟驅動器都有可由用戶顯示的屬性工作表。 下圖顯示 CD-ROM 磁碟驅動器的屬性屬性表。

cd-rom 屬性屬性表

有各種不同的裝置可以掛接為磁碟驅動器。 由於針對磁碟驅動器所設計的預設屬性表可能不足以供某些裝置使用,因此可以實作屬性表處理程式來新增掛接裝置特定的頁面。 此類型屬性表處理程式的基本實作與 如何註冊及實作檔類型的屬性表處理程式中所述相同,但有兩個例外。

  • 傳遞至處理程式 IShellExtInit::Initialize 方法的數據物件可能包含 CFSTR_MOUNTEDVOLUME 格式的磁碟驅動器路徑,而不是 CF_HDROP 格式。 當裝置掛接至驅動器號時,會使用CF_HDROP格式。 當遠端裝置掛接至資料夾而非驅動器號時,CFSTR_MOUNTEDVOLUME格式會與NTFS檔案系統搭配使用。
  • 處理程式的 GUID 會在 HKEY_CLASSES_ROOT\Drive\shellex\PropertySheetHandlers 機碼下註冊。

如何註冊及實作檔類型的屬性表處理程式

如何註冊及實作控制面板應用程式的屬性表處理程式