ChangeWindowMessageFilterEx (user32)
Last changed: jpsanders-12.190.158.6

.
Summary
Modifies the User Interface Privilege Isolation (UIPI) message filter for a specified window.

C# Signature:

[DllImport("user32.dll", SetLastError=true)]
public static extern bool ChangeWindowMessageFilterEx(IntPtr hWnd, uint msg, ChangeWindowMessageFilterExAction action,ref CHANGEFILTERSTRUCT changeInfo);

VB Signature:

Declare Function ChangeWindowMessageFilterEx Lib "user32.dll" (TODO) As TODO

User-Defined Field Types:

    public enum MessageFilterInfo : uint
    {
        None=0, AlreadyAllowed=1, AlreadyDisAllowed=2, AllowedHigher=3
    };

    public enum ChangeWindowMessageFilterExAction : uint
    {
        Reset = 0, Allow = 1, DisAllow = 2
    };

    [StructLayout(LayoutKind.Sequential)]
    public struct CHANGEFILTERSTRUCT
    {
        public uint size;
        public MessageFilterInfo info;
    }

Alternative Managed API:

Do you know one? Please contribute it!

Notes:

None.

Tips & Tricks:

Can use this too:

ChangeWindowMessageFilterEx(Handle,_message,ChangeWindowMessageFilterExAction.Allow, IntPtr.Zero);

If you do not care about the filterStatus

Sample Code:

    CHANGEFILTERSTRUCT filterStatus = new CHANGEFILTERSTRUCT();
        filterStatus.size= (uint) Marshal.SizeOf(filterStatus);
        filterStatus.info = 0;
        ChangeWindowMessageFilterEx(Handle,_message,ChangeWindowMessageFilterExAction.Allow, ref filterStatus);

Note
Documentation