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

要執行的動作,而且可以採取下列其中一個值:

意義
MSGFLT_ALLOW
1
允許訊息通過篩選。 這可讓 hWnd 接收訊息,而不論訊息的來源為何,甚至是來自較低許可權的程式。
MSGFLT_DISALLOW
2
如果訊息來自較低的特殊許可權進程,則會封鎖要傳遞至 hWnd 的訊息,除非使用 ChangeWindowMessageFilter 函式或全域允許整個進程處理訊息。
MSGFLT_RESET
0
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 版)

另請參閱

ChangeWindowMessageFilter

概念

參考

Windows