private static void RemoveWndProcUsage(HwndHost hwndHost) { int refCount = (int) hwndHost.GetValue(WindowHookRefCountProperty); refCount--; hwndHost.SetValue(WindowHookRefCountProperty, refCount); if (refCount == 0) { HwndHostExtensionsWindowHook hook = (HwndHostExtensionsWindowHook) hwndHost.GetValue(WindowHookProperty); hook.Dispose(); hwndHost.ClearValue(WindowHookProperty); } }
private static void AddWndProcUsage(HwndHost hwndHost) { int refCount = (int) hwndHost.GetValue(WindowHookRefCountProperty); refCount++; hwndHost.SetValue(WindowHookRefCountProperty, refCount); if(refCount == 1) { if (!TryHookWndProc(hwndHost)) { // Try again later, when the HwndHost is loaded. hwndHost.Loaded += (s, e) => TryHookWndProc((HwndHost)s); } } }