changeWindowMessageFilter 函式 (winuser.h)

[不建議使用 ChangeWindowMessageFilter 函 式,因為它具有全進程範圍。 請改用 ChangeWindowMessageFilterEx 函式,視需要控制特定視窗的存取。 未來版本的 Windows 可能不支援 ChangeWindowMessageFilter。]

從使用者介面許可權隔離 (UIPI) 訊息篩選新增或移除訊息。

語法

BOOL ChangeWindowMessageFilter(
  [in] UINT  message,
  [in] DWORD dwFlag
);

參數

[in] message

類型: UINT

要加入或移除篩選的訊息。

[in] dwFlag

類型: DWORD

要執行的動作。 下列其中一個值。

意義
MSGFLT_ADD
1
訊息 新增至篩選。 這會影響允許接收訊息的效果。
MSGFLT_REMOVE
2
從篩選中移除 訊息 。 這會影響封鎖訊息。

傳回值

類型: BOOL

如果成功,則為TRUE;否則為 FALSE。 若要取得擴充的錯誤資訊,請呼叫 GetLastError

注意 訊息可以成功從篩選中移除,但不保證會封鎖訊息。 如需詳細資訊,請參閱<備註>一節。
 

備註

UIPI 是一項安全性功能,可防止從較低的完整性層級傳送者接收訊息。 默認會封鎖所有具有高於 WM_USER 值的這類訊息。 篩選條件與直覺稍有相反,是允許通過的訊息清單。 因此,將訊息新增至篩選條件可允許從較低完整性傳送者接收該訊息,同時移除接收訊息的訊息區塊。

不論篩選設定為何,都必須有值小於 WM_USER 的特定訊息才能通過篩選。 您可以呼叫此函式,以從篩選中移除其中一個訊息,並傳回 TRUE。 不過,呼叫進程仍會收到訊息。

不允許 在 或以下SECURITY_MANDATORY_LOW_RID 的程式變更篩選。 如果這些行程呼叫此函式,它將會失敗。

如需完整性層級的詳細資訊,請參閱 瞭解及使用受保護的模式 Internet Explorer

規格需求

需求
最低支援的用戶端 Windows Vista [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2008 [僅限傳統型應用程式]
目標平台 Windows
標頭 winuser.h (包含 Windows.h)
程式庫 User32.lib
Dll User32.dll