WinEvent ID 的分配

每个 WinEvent 仅用于特定目的。 将 WinEvent 用于意外目的可能会导致与其他应用程序或作系统冲突,这可能导致应用程序或作系统变得不稳定。

Microsoft定义了多个不同的 WinEvents 类别,并且为每个类别定义了一个或多个值范围,用作 WinEvent ID。 社区保留范围(0xA000 - 0xAFFF)适用于需要定义新的 WinEvents 的应用程序。 使用此范围中的值有助于降低冲突的风险;但是,创建新 WinEvents 的开发人员仍需要协作以避免应用程序之间的冲突。

下表显示了 WinEvent 类别和为每个类别定义的值范围。

类别 范围 当前正在使用 评论
Microsoft活动辅助功能事件(系统保留) 0x0001-0x00FF 0x0001-0x0020 EVENT_SYSTEM_* 事件 ID
Microsoft活动辅助功能事件(系统保留) 0x4001-0x40FF 0x4001-0x4007 EVENT_CONSOLE_* 事件 ID
UI 自动化事件 (系统保留) 0x4E00-0x4EFF 0x4E20-0x4E33 UI 自动化事件 ID
UI 自动化事件 (系统保留) 0x7500-0x75FF 0x7530-0x759B UI 自动化属性更改的事件 ID
Microsoft活动辅助功能事件(系统保留) 0x8000-0x80FF 0x8000-0x8015 EVENT_OBJECT_* 事件 ID
OEM 保留 0x0101-0x01FF 0x0101-0x0122 IAccessible2 事件 ID
社区保留 0xA000-0xAFFF 没有 为辅助功能互作性联盟(AIA)规范定义的新事件保留
原子 0xC000 0xFFFF 0xC000 0xFFFF 为在运行时分配的自定义事件保留

 

以下主题更详细地介绍了 WinEvent 范围。

Microsoft活动辅助功能和 UI 自动化事件

Microsoft Active Accessibility 和 Microsoft UI 自动化保留了五个 WinEvent ID 范围。 第一个范围(0x0001- 0x00FF)保留给系统级事件,通常用于描述影响系统中所有应用程序的情况。 第二个范围(0x4001 - 0x40FF)是为特定于 Windows 控制台的事件保留的。 第三个(0x4E00-0x4EFF)和第四个范围(0x7500-0x75FF)用于反映 UI 自动化事件。 最后,第五个范围(0x8000 - 0x80FF)适用于与一个应用程序中特定于对象的情况相关的对象级事件。

WinUser.h 和 UIAutomationClient.h 头文件中定义了所有Microsoft活动辅助功能和 UI 自动化事件。

OEM 保留事件

OEM 保留范围对需要将 WinEvents 用作通信机制的任何人开放。 开发人员应定义和发布事件定义及其参数(或关联对象类型),以便避免意外冲突的事件 ID。 IAccessible2 规范使用 OEM 保留范围的一部分。

社区保留事件

社区保留范围适用于由辅助功能互作性联盟 (AIA) 指定的 WinEvents,供整个行业使用。 强烈建议开发人员在使用此范围中的值之前定义和发布官方规范。

ATOM 事件

ATOM 范围是为通过 UI 自动化扩展性 API 在运行时分配的事件 ID 保留的。 不要将 ATOM 范围中的值用于任何其他目的。 建议使用带有字符串 GUID 的 GlobalAddAtom 函数从 ATOM 范围分配 WinEvents。

使用保留范围中的值

根据 WinEvent 规范,系统保留范围的值或任何其他未定义范围的值不能在不修改 SDK 的情况下使用。 对于新的 WinEvents,应用程序应使用 OEM 保留范围或社区预留范围中的值。 在使用新的 WinEvent 之前,强烈建议开发人员公开和广泛共享其规范,并应与辅助功能互作性联盟合作来定义 WinEvent 规范。

WinEvents

辅助功能互作性联盟