[DllImport("user32.dll", SetLastError=true)]
public static extern bool ChangeWindowMessageFilterEx(IntPtr hWnd, uint msg, ChangeWindowMessageFilterExAction action,ref CHANGEFILTERSTRUCT changeInfo);
<DllImport("user32.dll")> _
Private Shared Function ChangeWindowMessageFilterEx(hWnd As IntPtr, msg As UInteger, action As ChangeWindowMessageFilterExAction, ByRef changeInfo As CHANGEFILTERSTRUCT) As <MarshalAs(UnmanagedType.Bool)> Boolean
End Function
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;
}
Private Enum MessageFilterInfo As UInteger
None
AlreadyAllowed
AlreadyDisAllowed
AllowedHigher
End Enum
Private Enum ChangeWindowMessageFilterExAction As UInteger
Reset
Allow
Disallow
End Enum
Private Enum ChangeWindowMessageFilterFlags As UInteger
Add = 1
Remove = 2
End Enum
<StructLayout(LayoutKind.Sequential)> _
Private Structure CHANGEFILTERSTRUCT
Public cbSize As UInteger
Public ExtStatus As MessageFilterInfo
End Structure
Do you know one? Please contribute it!
See documentation for full use and return values
Can use this too:
ChangeWindowMessageFilterEx(Handle,_message,ChangeWindowMessageFilterExAction.Allow, IntPtr.Zero);
If you do not care about the filterStatus
CHANGEFILTERSTRUCT filterStatus = new CHANGEFILTERSTRUCT();
filterStatus.size= (uint) Marshal.SizeOf(filterStatus);
filterStatus.info = 0;
ChangeWindowMessageFilterEx(Handle,_message,ChangeWindowMessageFilterExAction.Allow, ref filterStatus);