プラットフォーム SDK
ShellProc
ここに掲載されている内容は、コンテンツ提供時の情報で、以前は有効であったリンクやURLが現在無効になっている場合や、技術情報が最新の情報と異なる場合がありますのでご了承ください。
最新の情報については、>Platform SDK: Interprocess Communications (英語)または、http://msdn.microsoft.com/library/en-us/ipc/base/interprocess_communications.asp をご覧ください。

SetWindowsHookEx 関数と共に使われる、アプリケーション定義またはライブラリ定義のコールバック関数です。この関数は、システムからシェルイベントの通知を受け取ります。

HOOKPROC 型は、このコールバック関数へのポインタを定義します。ShellProc はアプリケーション定義またはライブラリ定義の関数名のプレースホルダであり、実際にこの関数名を使う必要はありません。

LRESULT CALLBACK ShellProc(
  int nCode,      // フックコード
  WPARAM wParam,  // イベント特有の情報
  LPARAM lParam   // イベント特有の情報
);

パラメータ

nCode
フックコードを指定します。次の値のいずれかを指定します。
意味
HSHELL_ACCESSIBILITYSTATE Windows 2000:アクセシビリティ(ユーザー補助機能)の状態が変更されました。
HSHELL_ACTIVATESHELLWINDOW シェルは自らのメインウィンドウをアクティブ化するべきです。
HSHELL_APPCOMMAND Windows 2000:ユーザーは入力イベントを完了しました(たとえば、マウスを使ってアプリケーションのコマンドボタンをクリックしたか、キーボードを使ってアプリケーションのコマンドキーを押しました)が、アプリケーションはその入力によって生成された メッセージをまだ処理していません。
HSHELL_GETMINRECT ウィンドウを最小化または最大化しようとしています。システムは、このウィンドウに対応する最小化長方形の座標を必要としています。
HSHELL_LANGUAGE キーボードの言語が変更されました。または、新しいキーボードレイアウトがロードされました。
HSHELL_REDRAW タスクバー内のウィンドウのタイトルが再描画されました。
HSHELL_TASKMAN ユーザーがタスクリストを選択しました。タスクリストを提供するシェルアプリケーションは、Windows が自らのタスクリストを表示することを防止するために、0 以外の値(TRUE)を返さなければなりません。
HSHELL_WINDOWACTIVATED ほかのトップレベルウィンドウ(親を持たないウィンドウ)がアクティブ化されました。
HSHELL_WINDOWCREATED 1 個のトップレベルウィンドウ(親を持たないウィンドウ)が作成されました。システムが ShellProc 関数を呼び出した時点で、既にこのウィンドウが存在しています。
HSHELL_WINDOWDESTROYED 1 個のトップレベルウィンドウ(親を持たないウィンドウ)が破棄されようとしています。システムが ShellProc 関数を呼び出したとき時点では、このウィンドウはまだ存在しています。

nCode パラメータの値が 0 未満の場合、このフックプロシージャはメッセージを処理せずにそのメッセージを CallNextHookEx 関数へ渡し、その関数の戻り値を返さなければなりません。

wParam
このパラメータの意味は、nCode パラメータの値に依存します。次の表を参照してください。
nCode wParam
HSHELL_ACCESSIBILITYSTATE どのユーザー補助機能が変更されたかを指定します。ACCESS_FILTERKEYS, ACCESS_MOUSEKEYS, ACCESS_STICKYKEYS のいずれかを指定します。
HSHELL_APPCOMMAND Windows 2000: メッセージが最初に発行された場所を指定します。たとえば、1 個のウィンドウのハンドルを指定します。詳細については、WM_APPCOMMAND cmd パラメータを参照してください。
HSHELL_GETMINRECT 最小化または最大化の対象となっているウィンドウのハンドルを指定します。
HSHELL_LANGUAGE ウィンドウのハンドルを指定します。
HSHELL_REDRAW 再描画されたウィンドウのハンドルを指定します。
HSHELL_WINDOWACTIVATED アクティブ化されたウィンドウのハンドルを指定します。
HSHELL_WINDOWCREATED 作成されたウィンドウのハンドルを指定します。
HSHELL_WINDOWDESTROYED 破棄対象のウィンドウのハンドルを指定します。

lParam
このパラメータの意味は、nCode パラメータの値に依存します。次の表を参照してください。
nCode lParam
HSHELL_APPCOMMAND Windows 2000:GET_APPCOMMAND_LPARAM(lParam) マクロは、入力イベントに対応するアプリケーションのコマンドです。

GET_DEVICE_LPARAM(lParam) マクロは、入力イベントを生成したオブジェクト、たとえばマウスやキーボードを示します。詳細については、MSDN ライブラリの uDevice パラメータの説明を参照してください。

GET_FLAGS_LPARAM(lParam) マクロは、WM_APPCOMMAND cmd パラメータの値に依存します。たとえば、このマクロは、メッセージが最初に送信された時点で、どの仮想キーが押されていたのか示せます。詳細については、MSDN ライブラリの WM_APPCOMMAND dwCmdFlags パラメータの説明を参照してください。

HSHELL_GETMINRECT 1 個の 構造体へのポインタを指定します。
HSHELL_LANGUAGE キーボードレイアウトのハンドルを指定します。
HSHELL_REDRAW ウィンドウが点滅している場合は 0 以外の値(TRUE)、それ以外の場合は 0(FALSE)を指定します。
HSHELL_WINDOWACTIVATED そのウィンドウがフルスクリーンモードの場合は 0 以外の値(TRUE)、それ以外の場合は 0(FALSE)を指定します。

戻り値

0 を返してください。

解説

アプリケーションがこのフックプロシージャをインストールするには、WH_SHELL フックタイプと ShellProc フックプロシージャへのポインタを指定して、SetWindowsHookEx 関数を呼び出します。

対応情報

Windows NT/2000:Windows NT 3.1 以降
Windows 95/98:Windows 95 以降
ヘッダー:Winuser.h 内で宣言、Windows.h をインクルード

参照

CallNextHookEx, , SetWindowsHookEx,

Page view tracker