public RPCResponseChannel(Process process) : base() { _Process = process; WM_RPC_MESSAGE = Win32.RegisterWindowMessage("ShootBlues.RPCMessage"); var cp = new CreateParams { Caption = "ShootBlues.RPCChannel", X = 0, Y = 0, Width = 0, Height = 0, Style = 0, ExStyle = WS_EX_NOACTIVATE, Parent = new IntPtr(-3) }; CreateHandle(cp); try { if (!Win32.ChangeWindowMessageFilterEx( this.Handle, WM_RPC_MESSAGE, MessageFilterFlag.AllowMessage, IntPtr.Zero )) { var error = Win32.GetLastError(); throw new Exception(String.Format("Error changing window message filter: {0:x8}", error)); } } catch (EntryPointNotFoundException) { try { if (!Win32.ChangeWindowMessageFilter( WM_RPC_MESSAGE, MessageFilterFlag.AllowMessage )) { var error = Win32.GetLastError(); throw new Exception(String.Format("Error changing window message filter: {0:x8}", error)); } } catch (EntryPointNotFoundException) { } } }