CBTProc コールバック関数

SetWindowsHookExA SetWindowsHookExW関数で使用されるアプリケーション定義またはライブラリ定義のコールバック関数。/ システムは、ウィンドウをアクティブ化、作成、破棄、最小化、最大化、移動、またはサイズ変更する前に、この関数を呼び出します。システム コマンドを完了する前に。システム メッセージ キューからマウスまたはキーボード イベントを削除する前に。キーボードフォーカスを設定する前に;または をシステム メッセージ キューと同期する前に行います。 コンピューター ベースのトレーニング (CBT) アプリケーションでは、このフック プロシージャを使用して、システムから有用な通知を受け取ります。

構文

LRESULT CALLBACK CBTProc(
  _In_ int    nCode,
  _In_ WPARAM wParam,
  _In_ LPARAM lParam
);

パラメーター

  • nCode [in]
    型: int

    フック プロシージャがメッセージの処理方法を決定するために使用するコード。 nCode が 0 未満の場合、フック プロシージャは、それ以上の処理を行わずに CallNextHookEx 関数にメッセージを渡す必要があり、CallNextHookEx によって返される値を返す必要があります。 このパラメーターには、次の値のいずれかを指定できます。

    説明
    HCBT_ACTIVATE 5

    システムがウィンドウをアクティブ化しようとしている。

    HCBT_CLICKSKIPPED 6

    システムは、システム メッセージ キューからマウス メッセージを削除しました。 このフック コードを受け取った後、CBT アプリケーションはマウス メッセージに応答して WH_JOURNALPLAYBACK フック プロシージャをインストールする必要があります。

    HCBT_CREATEWND 3

    ウィンドウが作成されようとしています。 システムは、WM_CREATEまたはWM_NCCREATE メッセージをウィンドウに送信する前に、フック プロシージャを呼び出します。 フック プロシージャから 0 以外の値が返された場合、システムはウィンドウを破棄します。 CreateWindow 関数は NULL を返しますが、 WM_DESTROY メッセージはウィンドウに送信されません。 フック プロシージャが 0 を返す場合、ウィンドウは通常どおりに作成されます。

    HCBT_CREATEWND通知の時点で、ウィンドウは作成されていますが、最終的なサイズと位置が決定されておらず、親ウィンドウが確立されていない可能性があります。 新しく作成されたウィンドウにメッセージを送信することはできますが、まだ WM_NCCREATE または WM_CREATE メッセージを受信していません。 また、CBT_CREATEWND構造体の hwndInsertAfter メンバーを変更することで、新しく作成されたウィンドウの z オーダーの位置を変更することもできます。

    HCBT_DESTROYWND 4

    ウィンドウが破棄されようとしています。

    HCBT_KEYSKIPPED 7

    システムは、システム・メッセージ待ち行列からキーボード・メッセージを除去しました。 このフック コードを受け取った後、CBT アプリケーションは、キーボード メッセージに応答して WH_JOURNALPLAYBACK フック プロシージャをインストールする必要があります。

    HCBT_MINMAX 1

    ウィンドウが最小化または最大化されようとしています。

    HCBT_MOVESIZE 0

    ウィンドウが移動またはサイズ変更されようとしています。

    HCBT_QS 2

    システムは、システム・メッセージ待ち行列から WM_QUEUESYNC メッセージを取り出しました。

    HCBT_SETFOCUS 9

    ウィンドウがキーボード フォーカスを受け取りようとしています。

    HCBT_SYSCOMMAND 8

    システム コマンドが実行されようとしています。これにより、CBT アプリケーションはホット キーを使用してタスクの切り替えを防ぐことができます。

     
    • wParam [in]
      型: WPARAM

      nCode パラメーターによって異なります。 詳細については、次の「解説」セクションを参照してください。

    • lParam [in]
      型: LPARAM

      nCode パラメーターによって異なります。 詳細については、次の「解説」セクションを参照してください。

    戻り値

    型:****

    型: LRESULT

    フック プロシージャによって返される値は、システムがこれらの操作のいずれかを許可または禁止するかどうかを決定します。 次の CBT フック コードに対応する操作の場合、戻り値は、操作を許可するには 0、回避するには 1 である必要があります。

    • HCBT_ACTIVATE
    • HCBT_CREATEWND
    • HCBT_DESTROYWND
    • HCBT_MINMAX
    • HCBT_MOVESIZE
    • HCBT_SETFOCUS
    • HCBT_SYSCOMMAND

    次の CBT フック コードに対応する操作の場合、戻り値は無視されます。

    • HCBT_CLICKSKIPPED
    • HCBT_KEYSKIPPED
    • HCBT_QS

    注釈

    HOOKPROC 型は、このコールバック関数へのポインターを定義します。 CBTProc は、アプリケーション定義またはライブラリ定義関数名のプレースホルダーです。

    フック・プロシージャーは、前述のフック・コードのリストに記載されている状況を除き、 WH_JOURNALPLAYBACK フック・プロシージャーをインストールしないでください。

    アプリケーションは、setWindowsHookExA/SetWindowsHookExW 関数の呼び出しで、WH_CBTフックの種類とフック プロシージャへのポインターを指定して、フック プロシージャをインストールします。

    次の表では、各HCBT_フック コードの wParam パラメーターと lParam パラメーターについて説明します。

    wParam lParam
    HCBT_ACTIVATE アクティブ化されるウィンドウへのハンドルを指定します。 アクティブ ウィンドウへのハンドルを含む CBTACTIVATESTRUCT 構造体への長いポインターを指定し、マウス クリックによってアクティブ化が変更されるかどうかを指定します。
    HCBT_CLICKSKIPPED システム メッセージ キューから削除されたマウス メッセージを指定します。 ヒット テスト コードと、マウス メッセージが意図されているウィンドウへのハンドルを含む MOUSEHOOKSTRUCT 構造体への長いポインターを指定します。

    HCBT_CLICKSKIPPED値は、WH_MOUSE フックがインストールされている場合にのみ CBTProc フック プロシージャに送信されます。 ヒット テスト コードの一覧については、「 WM_NCHITTEST」を参照してください。

    HCBT_CREATEWND 新しいウィンドウへのハンドルを指定します。 ウィンドウの初期化パラメーターを含む CBT_CREATEWND 構造体への長いポインターを指定します。 パラメーターには、ウィンドウの座標と寸法が含まれます。 これらのパラメーターを変更することで、 CBTProc フック プロシージャでウィンドウの初期サイズと位置を設定できます。
    HCBT_DESTROYWND 破棄されるウィンドウへのハンドルを指定します。 未定義であり、0 に設定する必要があります。
    HCBT_KEYSKIPPED 仮想キー コードを指定します。 繰り返し数、スキャン コード、キー遷移コード、以前のキー状態、コンテキスト コードを指定します。 HCBT_KEYSKIPPED値は、WH_KEYBOARD フックがインストールされている場合にのみ CBTProc フック プロシージャに送信されます。 詳細については、「 WM_KEYUP または WM_KEYDOWN」を参照してください。
    HCBT_MINMAX 最小化または最大化するウィンドウへのハンドルを指定します。 下位ワードで、操作を指定するウィンドウ表示値 (SW_) を指定します。 show-window 値の一覧については、 ShowWindow を参照してください。 上位ワードは未定義です。
    HCBT_MOVESIZE 移動またはサイズ変更するウィンドウへのハンドルを指定します。 ウィンドウの座標を含む RECT 構造体への長いポインターを指定します。 構造体の値を変更することで、 CBTProc フック プロシージャでウィンドウの最終的な座標を設定できます。
    HCBT_QS 未定義であり、0 である必要があります。 未定義であり、0 である必要があります。
    HCBT_SETFOCUS キーボード フォーカスを取得するウィンドウへのハンドルを指定します。 キーボード フォーカスを失うウィンドウへのハンドルを指定します。
    HCBT_SYSCOMMAND システム コマンドを指定するシステム コマンド値 (SC_) を指定します。 システム コマンド値の詳細については、「 WM_SYSCOMMAND」を参照してください。 WM_SYSCOMMAND メッセージの lParam 値と同じデータが含まれます。システム メニュー コマンドをマウスで選択した場合、下位ワードにはカーソルの x 座標が画面座標で含まれており、高位の単語には y 座標が含まれます。それ以外の場合、 パラメーターは使用されません。

     

    詳細については、「 Windows イベント」を参照してください。

    要件

    サポートされている最小のクライアント

    Windows 2000 Professional [デスクトップ アプリのみ]

    サポートされている最小のサーバー

    Windows 2000 Server [デスクトップ アプリのみ]

    ヘッダー

    Winuser.h (Windows.h を含む)

    関連項目

    CallNextHookEx

    CreateWindowA/CreateWindowW

    SetWindowsHookExA/SetWindowsHookExW

    WM_SYSCOMMAND メッセージ

    フック