ChangeWindowMessageFilter 関数 (winuser.h)
[ ChangeWindowMessageFilter 関数の使用は、プロセス全体のスコープがあるため、お勧めしません。 代わりに、 ChangeWindowMessageFilterEx 関数を使用して、必要に応じて特定のウィンドウへのアクセスを制御します。 ChangeWindowMessageFilter は、今後のバージョンの Windows ではサポートされない場合があります。]
ユーザー インターフェイス特権分離 (UIPI) メッセージ フィルターのメッセージを追加または削除します。
構文
BOOL ChangeWindowMessageFilter(
[in] UINT message,
[in] DWORD dwFlag
);
パラメーター
[in] message
型: UINT
フィルターに追加または削除するメッセージ。
[in] dwFlag
型: DWORD
実行するアクション。 次のいずれかの値です。
[値] | 意味 |
---|---|
|
メッセージをフィルターに追加します。 これは、メッセージの受信を許可する効果があります。 |
|
フィルターから メッセージ を削除します。 これは、メッセージをブロックする効果があります。 |
戻り値
種類: BOOL
成功した場合は TRUE。それ以外の場合は FALSE。 詳細なエラー情報を得るには、GetLastError を呼び出します。
解説
UIPI は、低い整合性レベルの送信者からメッセージを受信できないようにするセキュリティ機能です。 WM_USER より上 の値を持つこのようなメッセージはすべて、既定でブロックされます。 フィルターは、直感に反して、許可されるメッセージの一覧です。 そのため、フィルターにメッセージを追加すると、メッセージを低い整合性の送信者から受信できますが、メッセージを削除すると、そのメッセージの受信がブロックされます。
フィルター設定に関係なく、フィルターを通過するには 、WM_USER 未満の値を持つ特定のメッセージが必要です。 この関数を呼び出して、フィルターからこれらのメッセージの 1 つを削除すると、 TRUE が返されます。 ただし、メッセージは呼び出し元プロセスによって引き続き受信されます。
SECURITY_MANDATORY_LOW_RID以下のプロセスでは、フィルターを変更できません。 これらのプロセスがこの関数を呼び出すと、失敗します。
整合性レベルの詳細については、「保護モードでのインターネット エクスプローラーの理解と動作」を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Vista [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows Server 2008 [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | winuser.h (Windows.h を含む) |
Library | User32.lib |
[DLL] | User32.dll |