private static void OnSuppressEraseBackgroundChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { if (d is WebBrowser) { WebBrowser webBrowser = (WebBrowser)d; bool newValue = (bool)e.NewValue; if (newValue) { if (!TryHookWebBrowser(webBrowser)) { // The IE window has not been created yet, so we'll // look for it once a web page has been loaded. webBrowser.LoadCompleted += new LoadCompletedEventHandler(WebBrowserLoadCompleted); } } else { // When no longer suppressing the WM_ERASEBKGND message, // dispose our window hook. IEWindowHook hook = (IEWindowHook)webBrowser.GetValue(SuppressEraseBackgroundWindowHookProperty); if (hook != null) { hook.Dispose(); } webBrowser.ClearValue(SuppressEraseBackgroundWindowHookProperty); } } }
private static bool TryHookWebBrowser(WebBrowser webBrowser) { if (GetSuppressEraseBackground(webBrowser)) { // Try to find the IE window several layers within the WebBrowser. IntPtr hwndIEWindow = GetIEWindow(webBrowser); if (hwndIEWindow != IntPtr.Zero) { // Hook the window messages so we can intercept the // WM_ERASEBKGND message. IEWindowHook hook = new IEWindowHook(new HWND(hwndIEWindow)); // Keep our hook alive. webBrowser.SetValue(SuppressEraseBackgroundWindowHookProperty, hook); return(true); } } return(false); }
private static bool TryHookWebBrowser(WebBrowser webBrowser) { if (GetSuppressEraseBackground(webBrowser)) { // Try to find the IE window several layers within the WebBrowser. IntPtr hwndIEWindow = GetIEWindow(webBrowser); if (hwndIEWindow != IntPtr.Zero) { // Hook the window messages so we can intercept the // WM_ERASEBKGND message. IEWindowHook hook = new IEWindowHook(new HWND(hwndIEWindow)); // Keep our hook alive. webBrowser.SetValue(SuppressEraseBackgroundWindowHookProperty, hook); return true; } } return false; }