如何註冊及實作主控台應用程式的屬性工作表處理常式

許多主控台應用程式都會顯示 Properties 屬性工作表,讓使用者能夠檢視和修改各種裝置和系統設定。 這兩個應用程式:滑鼠和顯示,可讓屬性工作表處理常式以自訂頁面取代一或多個頁面。 下列螢幕擷取畫面顯示 [滑鼠屬性] 屬性 表。

滑鼠屬性屬性工作表

主控台應用程式的屬性工作表處理常式類似于檔案類型的屬性工作表處理常式,但有兩個主要例外狀況:

  • 它們是由主控台應用程式呼叫,而不是殼層。
  • 它們會以不同的方式註冊。

您所需了解的事情

技術

  • 殼層

必要條件

  • 瞭解主控台
  • 瞭解快顯功能表

指示

步驟 1:為主控台應用程式註冊屬性工作表處理常式

主控台應用程式屬性工作表處理常式必須在主控台子機碼下註冊。 此機碼可以位於兩個位置的任一位置,視處理常式是每一使用者還是每部電腦而定。 針對每個使用者註冊,主控台子機碼會HKEY_CURRENT_USER\主控台。 宏REGSTR_PATH_CONTROLPANEL如 Regstr.h 中所定義,可用於程式碼中取代 「主控台」。 針對每部電腦註冊,位置為:

HKEY_LOCAL_MACHINE
   Software
      Microsoft
         Windows
            Current Version
               Controls Folder

此路徑可以使用 Regstr.h 中定義的 REGSTR_PATH_CONTROLSFOLDER 宏,在程式碼中稱為 HKEY_LOCAL_MACHINE\REGSTR_PATH_CONTROLSFOLDER。

允許屬性工作表處理常式取代頁面的主控台應用程式,在主控台的子機碼下具有子機碼,例如 Mouse 和 Display。 應用程式的子機碼必須具有具有 PropertySheetHandlers子機碼的Shellex子機碼。 若要註冊屬性工作表處理常式,請將它的 GUID 新增至與主控台應用程式相關聯的PropertySheetHandlers子機碼。 若要這樣做,請為屬性工作表處理常式建立 PropertySheetHandlers 子機碼的子機碼,並將其預設值設定為處理常式 GUID 的字串形式。

下列範例會針對每部電腦註冊 Mouse 主控台 應用程式的屬性工作表處理常式。 若要以每個使用者為基礎註冊,請將HKEY_LOCAL_MACHINE\REGSTR_PATH_CONTROLSFOLDER取代為HKEY_CURRENT_USER\REGSTR_PATH_CONTROLPANEL

HKEY_LOCAL_MACHINE
   REGSTR_PATH_CONTROLSFOLDER
      Mouse
         shellex
            PropertySheetHandlers
               MyPropHandler
                  (Default) = {MyPropHandler CLSID GUID}

步驟 2:實作主控台應用程式的屬性工作表處理常式

實作主控台屬性工作表處理常式的程式與如何註冊和實作檔案類型的屬性工作表處理常式中所討論的程式非常類似。 主要差異在於 ,現在 IShellPropSheetExt::ReplacePage 需要非ken 實作,而不是 IShellPropSheetExt::AddPages

當主控台應用程式即將顯示其屬性工作表時,它會針對可取代的每個頁面呼叫屬性工作表處理常式的IShellPropSheetExt::ReplacePage方法一次。 uPageID參數會設定為頁面的識別碼。 可用頁面的識別碼定義于 Cplext.h 中。 下表列出目前可用的識別碼。

頁面識別碼 Description 主控台應用程式
CPLPAGE_MOUSE_BUTTONS [按鈕] 頁面 滑鼠
CPLPAGE_MOUSE_PTRMOTION [動作] 頁面 滑鼠
CPLPAGE_MOUSE_WHEEL [滾輪] 頁面 滑鼠
CPLPAGE_KEYBOARD_SPEED [速度] 頁面 鍵盤
CPLPAGE_DISPLAY_BACKGROUND [背景] 頁面 顯示

 

備註

建立和取代頁面的程式與新增頁面的程式相同。 如需詳細資訊,請參閱 如何註冊和實作檔案類型的屬性工作表處理常式