/// <summary> /// This method sends a message to the specified window in order to /// cause the specified bridge to unsubclass the window. This is /// important if a different thread than the thread that owns the /// window wants to initiate the unsubclassing. The HwndSubclass /// object must be identified by the value returned from Attach(). /// </summary> /// <param name="hwnd"> /// The window to unsubclass. /// </param> /// <param name="subclass"> /// The identifier of the subclass to unsubclass. /// </param> /// <param name="force"> /// Whether or not the unsubclassing should be forced. Due to the /// way that Win32 implements window subclassing, it is not always /// possible to safely remove a window proc from the WNDPROC chain. /// However, the delegate will not be called again after this /// method returns. /// </param> /// <returns> /// Nothing. /// </returns> internal static void RequestDetach(IntPtr hwnd, IntPtr subclass, bool force) { if (hwnd == IntPtr.Zero) { throw new ArgumentNullException("hwnd"); } if (subclass == IntPtr.Zero) { throw new ArgumentNullException("subclass"); } int iForce = force ? 1 : 0; UnsafeNativeMethods.UnsafeSendMessage(hwnd, DetachMessage, subclass, (IntPtr)iForce); }