예제 #1
0
        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);
                                                                                               } }));
        }