ChangeWindowMessageFilterEx 函式 (winuser.h)
修改指定視窗的使用者介面許可權隔離 (UIPI) 訊息篩選。
語法
BOOL ChangeWindowMessageFilterEx(
[in] HWND hwnd,
[in] UINT message,
[in] DWORD action,
[in, out, optional] PCHANGEFILTERSTRUCT pChangeFilterStruct
);
參數
[in] hwnd
類型: HWND
要修改其 UIPI 訊息篩選條件之視窗的句柄。
[in] message
類型: UINT
訊息篩選允許透過 或區塊的訊息。
[in] action
類型: DWORD
要執行的動作,而且可以採取下列其中一個值:
值 | 意義 |
---|---|
|
允許訊息通過篩選。 這可讓 hWnd 接收訊息,而不論訊息的來源為何,甚至是來自較低許可權的程式。 |
|
如果訊息來自較低的特殊許可權進程,則會封鎖要傳遞至 hWnd 的訊息,除非使用 ChangeWindowMessageFilter 函式或全域允許整個進程處理訊息。 |
|
將 hWnd 的視窗訊息篩選重設為預設值。 全域或整個進程允許的任何訊息都會通過,但這兩個類別中未包含的任何訊息,且來自較低許可權的程式將會遭到封鎖。 |
[in, out, optional] pChangeFilterStruct
類型: PCHANGEFILTERSTRUCT
CHANGEFILTERSTRUCT 結構的選擇性指標。
傳回值
類型: BOOL
如果函式成功,則會傳回 TRUE;否則會傳回 FALSE。 若要取得擴充的錯誤資訊,請呼叫 GetLastError。
備註
UIPI 是一項安全性功能,可防止從較低完整性層級的發件者接收訊息。 您可以使用此函式,允許將特定訊息傳遞至視窗,即使訊息源自較低完整性層級的進程也一樣。 與控制處理訊息篩選的 ChangeWindowMessageFilter 函式不同, ChangeWindowMessageFilterEx 函式會控制視窗訊息篩選。
應用程式可以使用 ChangeWindowMessageFilter 函 式,以全進程的方式允許或封鎖訊息。 如果行程訊息篩選或視窗訊息篩選條件允許訊息,則會將訊息傳遞至視窗。
請注意,不允許SECURITY_MANDATORY_LOW_RID 或以下的進程 變更訊息篩選。 如果這些行程呼叫此函式,它將會失敗併產生擴充的錯誤碼, ERROR_ACCESS_DENIED。
不論篩選設定為何,其值小於 WM_USER 的特定訊息都必須通過篩選條件。 當您嘗試使用此函式來允許或封鎖這類訊息時,將不會有任何作用。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 7 [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2008 R2 [僅限桌面應用程式] |
目標平台 | Windows |
標頭 | winuser.h (包含 Windows.h) |
程式庫 | User32.lib |
Dll | User32.dll |
API 集合 | ext-ms-win-ntuser-gui-l1-3-0 (Windows 10 10.0.10240 版) |
另請參閱
概念
參考