如何为控制面板应用程序注册和实现属性表处理程序

许多控制面板应用程序显示 Properties 属性表,使用户能够查看和修改各种设备和系统设置。 其中两个应用程序(鼠标和显示)允许属性表处理程序将其一个或多个页面替换为自定义页面。 以下屏幕截图显示了 “鼠标属性” 属性表。

鼠标属性属性表

控制面板应用程序的属性表处理程序与文件类型的属性表处理程序类似,但有两个主要例外:

  • 它们由控制面板应用程序调用,而不是由 Shell 调用。
  • 它们的注册方式不同。

需要了解的事项

技术

  • Shell

先决条件

  • 了解控制面板
  • 了解快捷菜单

Instructions

步骤 1:注册 控制面板 应用程序的属性表处理程序

必须在 控制面板 子项下注册控制面板应用程序属性表处理程序。 此键可以位于两个位置之一,具体取决于处理程序是按用户还是按计算机。 对于每用户注册,控制面板子项为HKEY_CURRENT_USER\控制面板。 Regstr.h 中定义的宏REGSTR_PATH_CONTROLPANEL可以在代码中使用,以代替“控制面板”。 对于每台计算机注册,位置为:

HKEY_LOCAL_MACHINE
   Software
      Microsoft
         Windows
            Current Version
               Controls Folder

可以使用 Regstr.h 中定义的 REGSTR_PATH_CONTROLSFOLDER 宏,在代码中将此路径称为 HKEY_LOCAL_MACHINE\REGSTR_PATH_CONTROLSFOLDER。

允许属性表处理程序替换页面的控制面板应用程序在控制面板的子项下有一个子项,为应用程序命名,例如鼠标和显示。 应用程序的子项必须具有具有 PropertySheetHandlers 子项的 shellex 子项。 若要注册属性表处理程序,请将其 GUID 添加到与 控制面板 应用程序关联的 PropertySheetHandlers 子项。 为此,请为属性表处理程序创建 PropertySheetHandlers 子项的子项,并将其默认值设置为处理程序 GUID 的字符串形式。

以下示例基于每台计算机为鼠标控制面板应用程序注册属性表处理程序。 若要按用户注册,请将 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 需要非token 实现,而不是 IShellPropSheetExt::AddPages

当控制面板应用程序即将显示其属性表时,它会为每个可以替换的页面调用属性表处理程序的 IShellPropSheetExt::ReplacePage 方法一次。 uPageID 参数设置为页面的 ID。 可用页面的 ID 在 Cplext.h 中定义。 下表列出了当前可用的 ID。

页面 ID 说明 控制面板 应用程序
CPLPAGE_MOUSE_BUTTONS “按钮”页 鼠标
CPLPAGE_MOUSE_PTRMOTION “运动”页 鼠标
CPLPAGE_MOUSE_WHEEL Wheel 页面 鼠标
CPLPAGE_KEYBOARD_SPEED “速度”页 Keyboard
CPLPAGE_DISPLAY_BACKGROUND “背景”页 显示

 

备注

创建和替换页面的过程与添加页面的过程相同。 有关详细信息,请参阅 如何为文件类型注册和实现属性表处理程序