屬性工作表處理常式
當使用者以滑鼠右鍵按一下 Shell 物件時,顯示的快捷方式功能表通常會包含 [屬性] 專案。 選取該專案會啟動可讓使用者檢視的屬性工作表,在某些情況下修改物件的屬性。 您可以實作並註冊 屬性工作表處理常式來自訂此屬性工作表。
建立 殼層延伸模組處理常式中會討論實作和註冊 Shell 延伸模組處理常式的一般程式。 本檔著重于屬性工作表處理常式特有的實作層面。
屬性工作表處理常式的運作方式
下圖顯示 Windows XP 文字檔的 Properties 屬性工作表。
此圖顯示針對任何檔案顯示的預設 Properties 屬性工作表。 對於許多這類屬性工作表,您可以實作並註冊屬性工作表處理常式,將一或多個頁面新增至屬性工作表。
屬性工作表處理常式最常註冊檔案類型。 每個處理常式都可以將一個自訂頁面新增至 類別的 Properties 屬性工作表。 這些頁面通常會讓使用者存取特定檔案類型特有的屬性。 例如,包含文字檔的檔案類型可能會顯示列出標題和作者的頁面,以及檔的抽象。 這種屬性工作表處理常式的特殊案例是用來將頁面新增至掛接磁片磁碟機的 Properties 屬性工作表。
屬性工作表處理常式的另一個用途是取代主控台應用程式所顯示之屬性工作表中的頁面。 例如,滑鼠製造商可以使用屬性工作表處理常式,將主控台滑鼠屬性表上的Buttons頁面取代為其滑鼠特性自訂的頁面。
如同所有殼層擴充處理常式,屬性工作表處理常式是同進程元件物件模型, (COM) 實作為 DLL 的物件。 除了 IUnknown之外,它們還必須匯出兩個介面: IShellExtInit 和 IShellPropSheetExt。
Shell 會使用 IShellExtInit 介面來初始化處理常式。 當 Shell 呼叫 IShellExtInit::Initialize時,它會傳入具有物件名稱的資料物件,以及包含檔案之資料夾 (PIDL) 的專案識別碼清單指標。 hRegKey參數不會與屬性工作表處理常式搭配使用。 IShellExtInit::Initialize方法必須從資料物件擷取檔案名,並儲存名稱和資料夾的 PIDL 以供稍後使用。 如需進一步的詳細資料,請參閱建立殼層延伸模組處理常式的實作 IShellExtInit一節。
作業的其餘部分會透過處理常式的 IShellPropSheetExt 介面進行。 如果屬性工作表與檔案類型相關聯,Shell 會呼叫 IShellPropSheetExt::AddPages ,以允許處理常式將頁面新增至屬性工作表。 如果屬性工作表與主控台應用程式相關聯,Shell 會呼叫IShellPropSheetExt::ReplacePage,以允許處理常式取代頁面。
註冊並實作掛接之磁片磁碟機的屬性工作表處理常式
每個掛接的磁片磁碟機都有可由使用者顯示的 [屬性] 工作表。 下圖顯示 CD-ROM 磁片磁碟機的 Properties 屬性工作表。
有各種不同的裝置可以掛接為磁片磁碟機。 由於針對磁片磁碟機所設計的預設屬性表可能不足以供某些裝置使用,因此可以實作屬性工作表處理常式,以新增掛接裝置特有的頁面。 這個屬性工作表處理常式類型的基本實作與 如何註冊和實作檔案類型的屬性工作表處理常式中討論的內容表處理常式相同,但有兩個例外狀況。
- 傳遞至處理常式 IShellExtInit::Initialize 方法的資料物件可能包含 CFSTR_MOUNTEDVOLUME 格式的磁片磁碟機路徑,而不是 CF_HDROP 格式。 當裝置掛接至磁碟機號時,會使用CF_HDROP格式。 當遠端裝置掛接至資料夾而非磁碟機號時,CFSTR_MOUNTEDVOLUME格式會與 NTFS 檔案系統搭配使用。
- 處理常式的 GUID 會在HKEY_CLASSES_ROOT\磁片磁碟機\殼層ex\PropertySheetHandlers索引鍵下註冊。
相關主題