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

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

mouse properties property sheet

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

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

需要了解的事项

技术

  • Shell

先决条件

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

说明

步骤 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_MACHINEREGSTR_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 需要非肯实现而不是 IShellPropSheetExt::AddPages

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

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

 

注解

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