次の方法で共有


IUIAutomation::AddFocusChangedEventHandler メソッド (uiautomationclient.h)

フォーカスが変更されたイベントを処理するメソッドを登録します。

メモ イベント ハンドラーを実装する前に、「スレッドの問題について」で説明されているスレッドの問題 について理解しておく必要があります。
 

構文

HRESULT AddFocusChangedEventHandler(
  [in] IUIAutomationCacheRequest             *cacheRequest,
  [in] IUIAutomationFocusChangedEventHandler *handler
);

パラメーター

[in] cacheRequest

種類: IUIAutomationCacheRequest*

キャッシュ要求へのポインター。キャッシュが必要ない場合は NULL

[in] handler

種類: IUIAutomationFocusChangedEventHandler*

イベントを処理するオブジェクトへのポインター。

戻り値

種類: HRESULT

このメソッドは、成功すると S_OK を返します。 そうでない場合は、HRESULT エラー コードを返します。

注釈

フォーカス変更イベントはシステム全体です。より狭いスコープを設定することはできません。

UI オートメーション クライアントでは、イベント ハンドラーを追加または削除するために複数のスレッドを使用しないでください。 同じクライアント プロセスで別のイベント ハンドラーが追加または削除されている間に、1 つのイベント ハンドラーが追加または削除されると、予期しない動作が発生する可能性があります。

次の関数例では、 IUIAutomationFocusChangedEventHandler を 実装し、 ハンドラーを追加してイベントをサブスクライブするオブジェクトを作成します。

HRESULT AddFocusHandler(IUIAutomation* pAutomation)
{ 
    // CFocusHandler is a class that implements IUIAutomationFocusChangedEventHandler. 
    CFocusHandler* pFocusHandler = new CFocusHandler();
    if (!pFocusHandler)
    {
        return E_OUTOFMEMORY;
    }
    IUIAutomationFocusChangedEventHandler* pHandler;
    pFocusHandler->QueryInterface(IID_IUIAutomationFocusChangedEventHandler, (void**)&pHandler);
    HRESULT hr = pAutomation->AddFocusChangedEventHandler(NULL, pHandler);
    pFocusHandler->Release();
    return hr;
}

要件

要件
サポートされている最小のクライアント Windows 7、Windows Vista SP2 と Windows Vista 用プラットフォーム更新プログラム、SP3 を使用した Windows XP、Windows Vista 用プラットフォーム更新プログラム [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2008 R2、Windows Server 2008 SP2 および Windows Server 2008 用プラットフォーム更新プログラム、WINDOWS Server 2003 SP2 および Windows Server 2008 用プラットフォーム更新プログラム [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー uiautomationclient.h (UIAutomation.h を含む)

こちらもご覧ください

UI オートメーションプロパティとコントロール パターンのキャッシュ

概念

IUIAutomation

IUIAutomationFocusChangedEventHandler

リファレンス

RemoveAllEventHandlers

RemoveFocusChangedEventHandler

UI オートメーション イベントのサブスクライブ

スレッドの問題について