ShellProc 関数
SetWindowsHookExA SetWindowsHookExW関数で使用されるアプリケーション定義またはライブラリ定義のコールバック関数。/ 関数は、システムからシェル イベントの通知を受け取ります。
HOOKPROC 型は、このコールバック関数へのポインターを定義します。 ShellProc は、アプリケーション定義またはライブラリ定義関数名のプレースホルダーです。
LRESULT CALLBACK ShellProc(
_In_ int nCode,
_In_ WPARAM wParam,
_In_ LPARAM lParam
);
型: int
フック コード。
nCode が 0 未満の場合、フック プロシージャは、それ以上の処理を行わずに CallNextHookEx 関数にメッセージを渡す必要があり、CallNextHookEx によって返される値を返す必要があります。
このパラメーターには、次の値のいずれかを指定できます。
値 | 説明 |
---|---|
HSHELL_ACCESSIBILITYSTATE 11 | アクセシビリティの状態が変更されました。 |
HSHELL_ACTIVATESHELLWINDOW 3 | シェルは、そのメインウィンドウをアクティブにする必要があります。 |
HSHELL_APPCOMMAND 12 | ユーザーが入力イベントを完了し (たとえば、マウスのアプリケーション コマンド ボタンやキーボードのアプリケーション コマンド キーを押した場合)、その入力によって生成された WM_APPCOMMAND メッセージがアプリケーションで処理されませんでした。 シェル プロシージャが WM_COMMAND メッセージを処理する場合は、 CallNextHookEx を呼び出さないでください。 詳細については、「戻り値」セクションを参照してください。 |
HSHELL_GETMINRECT 5 | ウィンドウが最小化または最大化されています。 システムには、ウィンドウの最小化された四角形の座標が必要です。 |
HSHELL_LANGUAGE 8 | キーボード言語が変更されたか、新しいキーボード レイアウトが読み込まれました。 |
HSHELL_REDRAW 6 | タスク バーのウィンドウのタイトルが再描画されました。 |
HSHELL_TASKMAN 7 | ユーザーがタスク リストを選択しました。 タスク リストを提供するシェル アプリケーションは、Windows がタスク リストを開始しないように TRUE を 返す必要があります。 |
HSHELL_WINDOWACTIVATED 4 | アクティブ化が、別のトップレベルの未所有ウィンドウに変更されました。 |
HSHELL_WINDOWCREATED 1 | トップレベルの未所有のウィンドウが作成されました。 このウィンドウは、システムがこのフックを呼び出すときに存在します。 |
HSHELL_WINDOWDESTROYED 2 | トップレベルの未所有のウィンドウが破棄されようとしています。 システムがこのフックを呼び出すと、ウィンドウは引き続き存在します。 |
HSHELL_WINDOWREPLACED 13 | 最上位のウィンドウが置き換えられます。 このウィンドウは、システムがこのフックを呼び出すときに存在します。 |
型: WPARAM
このパラメーターは、次の表に示すように、 nCode パラメーターの値によって異なります。
nCode | wParam |
---|---|
HSHELL_ACCESSIBILITYSTATE | 状態が変更されたアクセシビリティ機能を示します。 この値は、ACCESS_FILTERKEYS、ACCESS_MOUSEKEYS、またはACCESS_STICKYKEYSのいずれかです。 |
HSHELL_APPCOMMAND | WM_APPCOMMAND メッセージが最初に送信された場所を示します。たとえば、ウィンドウへのハンドルなどです。 詳細については、WM_APPCOMMANDの cmd パラメーターに 関するページを参照してください。 |
HSHELL_GETMINRECT | 最小化または最大化されたウィンドウへのハンドル。 |
HSHELL_LANGUAGE | ウィンドウへのハンドル。 |
HSHELL_REDRAW | 再描画ウィンドウへのハンドル。 |
HSHELL_WINDOWACTIVATED | アクティブ化されたウィンドウへのハンドル。 |
HSHELL_WINDOWCREATED | 作成されたウィンドウへのハンドル。 |
HSHELL_WINDOWDESTROYED | 破棄されたウィンドウへのハンドル。 |
HSHELL_WINDOWREPLACED | 置き換えられるウィンドウへのハンドル。 Windows 2000: サポートされていません。 |
型: LPARAM
このパラメーターは、次の表に示すように、 nCode パラメーターの値によって異なります。
nCode | lParam |
---|---|
HSHELL_APPCOMMAND |
GET_APPCOMMAND_LPARAM(lParam) は、入力イベントに対応するアプリケーション コマンドです。
GET_DEVICE_LPARAM(lParam) は、入力イベントを生成した内容を示します。たとえば、マウスやキーボードなどです。 詳細については、「WM_APPCOMMAND」の uDevice パラメーターの説明を参照してください。
GET_FLAGS_LPARAM(lParam) は、WM_APPCOMMANDの cmd の値によって異なります。 たとえば、 WM_APPCOMMAND メッセージが最初に送信されたときに、どの仮想キーが保留されていたかを示している場合があります。 詳細については、WM_APPCOMMANDの dwCmdFlags description パラメーターを参照してください。 |
HSHELL_GETMINRECT | RECT 構造体へのポインター。 |
HSHELL_LANGUAGE | キーボード レイアウトへのハンドル。 |
HSHELL_MONITORCHANGED | 別のモニターに移動したウィンドウへのハンドル。 |
HSHELL_REDRAW | ウィンドウが点滅している場合は TRUE 、それ以外の場合は FALSE です。 |
HSHELL_WINDOWACTIVATED | ウィンドウが全画面表示モードの場合は TRUE、それ以外の場合は FALSE です。 |
HSHELL_WINDOWREPLACED | 新しいウィンドウへのハンドル。 Windows 2000: サポートされていません。 |
型: LRESULT
nCode の値がHSHELL_APPCOMMANDで、シェル プロシージャがWM_COMMANDメッセージを処理しない限り、戻り値は 0 にする必要があります。 この場合、戻り値は 0 以外にする必要があります。
SetWindowsHookEx 関数の呼び出しで、WH_SHELLフックの種類とフック プロシージャへのポインターを指定して、このフック プロシージャをインストールします。