System-Level and Object-Level Events

There are three classes of WinEvents: system level, object level, and console. Each has one of the following corresponding event constant values:

  • Event constants that begin with EVENT_SYSTEM identify system-level events. These events describe situations affecting all applications in the system.
  • Event constants that begin with EVENT_OBJECT identify object-level events. These events pertain to situations specific to objects within one application.
  • Console WinEvents are new in Active Accessibility 2.0. These events indicate when information about console windows changes.

Both classes of events are generated by the operating system and server applications. The operating system generates system-level and object-level events for the following scenarios:

  • System-wide notifications about focus changes
  • Activation changes
  • Events regarding system-provided objects, such as common controls

Server applications generate system-level events for the following scenarios:

  • Alerts
  • Custom objects that replicate system objects, such as custom menus and scroll bars

Server applications typically generate object-level events for changes to the accessible objects they contain, such as object creation, destruction, and selection.

Although the system generates object-level events for window objects, servers must also send object-level events for every accessible object contained in a window. For example, if a server application registers an application-defined window class to create a custom control, the system generates object-level events for the window that contains the custom control; the server generates object-level events for the accessible object that provides information about the control.

Servers only generate object-level events for the custom controls for which they implement the IAccessible interface. For more information, see Custom User Interface Elements.