private void OnMouseMove() { Point mousePosition; Win32NativeMethods.GetCursorPos(out mousePosition); var windowHandleAtMousePosition = GetWindowHandleFromPoint(mousePosition.X, mousePosition.Y); if (_windowUnderMouseHandle == windowHandleAtMousePosition) { return; } if (_highlightFrames.ContainsKey(_windowUnderMouseHandle)) { var oldFrame = _highlightFrames[_windowUnderMouseHandle]; Application.Current?.Dispatcher?.BeginInvoke(DispatcherPriority.Normal, (Action)(() => { { oldFrame.HideFrame(); } })); } _windowUnderMouseHandle = windowHandleAtMousePosition; if (IntPtr.Zero == windowHandleAtMousePosition) { return; } var frame = GetHighlightFrame(windowHandleAtMousePosition); Application.Current?.Dispatcher?.BeginInvoke(DispatcherPriority.Normal, (Action)(() => { { frame.RefreshPosition(windowHandleAtMousePosition); frame.ShowFrame(_settings.HighlighterColor, _settings.HighlighterWidth); } })); }