AccessibleObjectFromEvent 関数 (oleacc.h)

クライアントのイベント フック関数によって現在処理されているイベントを生成したオブジェクトの IAccessible インターフェイスのアドレスを取得します。

構文

HRESULT AccessibleObjectFromEvent(
  [in]  HWND        hwnd,
  [in]  DWORD       dwId,
  [in]  DWORD       dwChildId,
  [out] IAccessible **ppacc,
  [out] VARIANT     *pvarChild
);

パラメーター

[in] hwnd

種類: HWND

イベントを生成したウィンドウのウィンドウ ハンドルを指定します。 この値は、イベント フック関数に送信されるウィンドウ ハンドルである必要があります。

[in] dwId

型: DWORD

イベントを生成したオブジェクトのオブジェクト ID を指定します。 この値は、イベント フック関数に送信されるオブジェクト ID である必要があります。

[in] dwChildId

型: DWORD

イベントがオブジェクトまたはその子要素のいずれかによってトリガーされたかどうかを指定します。 オブジェクトがイベントをトリガーした場合、 dwChildID はCHILDID_SELF。 子要素がイベントをトリガーした場合、 dwChildID は要素の子 ID です。 この値は、イベント フック関数に送信される子 ID である必要があります。

[out] ppacc

種類: IAccessible**

IAccessible インターフェイスのアドレスを受け取るポインター変数のアドレス。 インターフェイスは、イベントを生成したオブジェクト、またはイベントを生成した要素の親用です。

[out] pvarChild

型: VARIANT*

UI 要素に関する情報にアクセスするために使用できる子 ID を指定する VARIANT 構造体 のアドレス。

戻り値

型: STDAPI

成功した場合は、S_OK を返します。

成功しなかった場合は、次のいずれかの標準 COM エラー コードを返します。

リターン コード 説明
E_INVALIDARG
引数が有効ではありません。

注釈

クライアントは、イベント フック関数内でこの関数を呼び出して、イベントを生成したオブジェクトまたはイベントを生成した要素の親への IAccessible インターフェイス ポインターを取得します。 WinEventProc コールバック関数に送信されるパラメーターは、この関数の hwnddwObjectID、および dwChildID パラメーターに使用する必要があります。

この関数は、イベントに関連付けられているオブジェクト階層内の最下位レベルのアクセス可能なオブジェクトを取得します。 イベントを生成した要素がアクセス可能なオブジェクトではない (つまり、 IAccessible をサポートしていない) 場合、関数は親オブジェクトの IAccessible インターフェイスを取得します。 親オブジェクトは 、IAccessible インターフェイスを介して子要素に関する情報を提供する必要があります。

の IAccessible メソッドや関数と同様に、クライアントはユーザー アクションのために IAccessible インターフェイス ポインターのエラーを受け取る可能性があります。 詳細については、「 IAccessible インターフェイス ポインターのエラーの受信」を参照してください。

オブジェクトが完全に初期化されていないため、 EVENT_OBJECT_CREATE に応答して呼び出された場合、この関数は失敗します。 同様に、クライアントは、オブジェクトが使用できなくなり、応答できないため、 EVENT_OBJECT_DESTROY に応答してこれを呼び出すべきではありません。 クライアントは、EVENT_OBJECT_CREATEとEVENT_OBJECT_DESTROYではなく、EVENT_OBJECT_SHOWイベントとEVENT_OBJECT_HIDEイベントにwatchします。

次のコード例は、このメソッドが WinEventProc イベント ハンドラーで呼び出されていることを示しています。


void CALLBACK HandleWinEvent(HWINEVENTHOOK hook, DWORD event, HWND hwnd, 
                             LONG idObject, LONG idChild, 
                             DWORD dwEventThread, DWORD dwmsEventTime)
{
    IAccessible* pAcc = NULL;
    VARIANT varChild;
    HRESULT hr = AccessibleObjectFromEvent(hwnd, idObject, idChild, &pAcc, &varChild);  
    if ((hr == S_OK) && (pAcc != NULL))
    {
        // Do something with the accessible object, then release it.        
        // ... 
        pAcc->Release();
    }
}

要件

要件
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2003 (デスクトップ アプリのみ)
対象プラットフォーム Windows
ヘッダー oleacc.h
Library Oleacc.lib
[DLL] Oleacc.dll
再頒布可能パッケージ SP6 以降および Windows 95 を使用した Windows NT 4.0 のアクティブなアクセシビリティ 1.3 RDK

こちらもご覧ください

AccessibleObjectFromPoint

AccessibleObjectFromWindow

Iaccessible

バリアント

WinEventProc