プラットフォーム 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,