WinEvent ID の割り当て
各 WinEvent は、特定の目的にのみ使用することを目的としています。 意図しない目的で WinEvent を使用すると、他のアプリケーションやオペレーティング システムとの競合が発生し、アプリケーションまたはオペレーティング システムが不安定になる可能性があります。
Microsoft では、WinEvents のいくつかの異なるカテゴリを定義しており、カテゴリごとに、WinEvent ID として使用する 1 つ以上の値の範囲が定義されています。 コミュニティ予約範囲 (0xA000 - 0xAFFF) は、新しい WinEvents を定義する必要があるアプリケーションで使用できます。 この範囲の値を使用すると、衝突のリスクを軽減できます。ただし、新しい WinEvents を作成する開発者は、アプリケーション間の競合を回避するために共同作業を行う必要があります。
次の表は、WinEvent カテゴリと、各カテゴリに定義されている値の範囲を示しています。
カテゴリ | 範囲 | 現在使用中 | 説明 |
---|---|---|---|
Microsoft Active Accessibility イベント (システム予約済み) | 0x0001-0x00FF | 0x0001-0x0020 | EVENT_SYSTEM_* イベント ID |
Microsoft Active Accessibility イベント (システム予約済み) | 0x4001-0x40FF | 0x4001-0x4007 | EVENT_CONSOLE_* イベント ID |
UI オートメーション イベント (システム予約済み) | 0x4E00-0x4EFF | 0x4E20-0x4E33 | イベント ID のUI オートメーション |
UI オートメーション イベント (システム予約済み) | 0x7500-0x75FF | 0x7530-0x759B | プロパティ変更イベント ID のUI オートメーション |
Microsoft Active Accessibility イベント (システム予約済み) | 0x8000-0x80FF | 0x8000-0x8015 | EVENT_OBJECT_* イベント ID |
OEM 予約済み | 0x0101-0x01FF | 0x0101-0x0122 | IAccessible2 イベント ID |
Community Reserved | 0xA000-0xAFFF | なし | アクセシビリティ相互運用性アライアンス (AIA) 仕様によって定義された新しいイベント用に予約済み |
ATOM | 0xC000-0xFFFF | 0xC000-0xFFFF | 実行時に割り当てられたカスタム イベント用に予約済み |
次のトピックでは、WinEvent の範囲について詳しく説明します。
Microsoft Active Accessibility and UI オートメーション イベント
5 つの範囲の WinEvent ID は、Microsoft Active Accessibility と Microsoft UI オートメーションで使用するために予約されています。 最初の範囲 (0x0001 — 0x00FF) は、システム レベルのイベント用に予約されています。通常は、システム内のすべてのアプリケーションに影響を与える状況を説明するために使用されます。 2 番目の範囲 (0x4001 - 0x40FF) は、Windows コンソール固有のイベント用に予約されています。 3 番目 (0x4E00 -0x4EFF) と 4 番目の範囲 (0x7500 — 0x75FF) は、UI オートメーション イベントのリフレクション用です。 最後に、5 番目の範囲 (0x8000 - 0x80FF) は、1 つのアプリケーション内のオブジェクトに固有の状況に関連するオブジェクト レベルのイベント用です。
すべての Microsoft Active Accessibility イベントとUI オートメーション イベントは、WinUser.h ヘッダー ファイルと UIAutomationClient.h ヘッダー ファイルで定義されます。
OEM 予約イベント
OEM 予約範囲は、通信メカニズムとして WinEvents を使用する必要があるすべてのユーザーに対して開かれています。 開発者は、イベント ID の偶発的な競合を回避できるように、イベント処理用のパラメーター (または関連するオブジェクト型) と共にイベント定義を定義して公開する必要があります。 IAccessible2 仕様では、OEM 予約範囲の一部が使用されます。
コミュニティ予約イベント
Community Reserved の範囲は、業界全体で使用するために、アクセシビリティ相互運用性アライアンス (AIA) で指定された WinEvents 用です。 開発者は、この範囲の値を使用する前に、公式の仕様を定義して公開することを強くお勧めします。
ATOM イベント
ATOM 範囲は、UI オートメーション拡張 API を介して実行時に割り当てられるイベント ID 用に予約されています。 ATOM 範囲の値は、他の目的には使用しないでください。 文字列 GUID で GlobalAddAtom 関数を使用することは、ATOM 範囲から WinEvents を割り当てる場合に推奨される方法です。
予約範囲の値の使用
WinEvent の仕様によると、システム予約範囲またはその他の定義されていない範囲の値は、SDK を変更しないと使用できません。 新しい WinEvents の場合、アプリケーションでは OEM 予約またはコミュニティ予約範囲の値を使用する必要があります。 新しい WinEvent を使用する前に、開発者は仕様をオープンかつ広く共有することを強くお勧めします。また、アクセシビリティ相互運用性アライアンスと連携して WinEvent 仕様を定義する必要があります。
関連トピック