private void TraiterKey(bool isDown, System.Windows.Forms.KeyEventArgs e)
        {
            // Validité
            if (!_activateHook)
            {
                return;
            }
            if (e.KeyCode != System.Windows.Forms.Keys.W &&
                e.KeyCode != System.Windows.Forms.Keys.A &&
                e.KeyCode != System.Windows.Forms.Keys.S &&
                e.KeyCode != System.Windows.Forms.Keys.D)
            {
                return;
            }

            // Assigner les variables
            if (e.KeyCode == System.Windows.Forms.Keys.W)
            {
                _isDownW = isDown;
            }
            if (e.KeyCode == System.Windows.Forms.Keys.A)
            {
                _isDownA = isDown;
            }
            if (e.KeyCode == System.Windows.Forms.Keys.S)
            {
                _isDownS = isDown;
            }
            if (e.KeyCode == System.Windows.Forms.Keys.D)
            {
                _isDownD = isDown;
            }

            // Déterminer la "zone"
            int nbKeyPressed = (_isDownW ? 1 : 0) + (_isDownA ? 1 : 0) + (_isDownS ? 1 : 0) + (_isDownD ? 1 : 0);

            if (nbKeyPressed <= 0 || nbKeyPressed > 2)
            {
                _edgeZoneKeyboard = EdgeZone.NONE;
            }
            else if (_isDownA && _isDownW)
            {
                _edgeZoneKeyboard = EdgeZone.LT;
            }
            else if (_isDownA && _isDownS)
            {
                _edgeZoneKeyboard = EdgeZone.LB;
            }
            else if (_isDownD && _isDownW)
            {
                _edgeZoneKeyboard = EdgeZone.RT;
            }
            else if (_isDownD && _isDownS)
            {
                _edgeZoneKeyboard = EdgeZone.RB;
            }
            else if (_isDownA)
            {
                _edgeZoneKeyboard = EdgeZone.L;
            }
            else if (_isDownD)
            {
                _edgeZoneKeyboard = EdgeZone.R;
            }
            else if (_isDownW)
            {
                _edgeZoneKeyboard = EdgeZone.T;
            }
            else if (_isDownS)
            {
                _edgeZoneKeyboard = EdgeZone.B;
            }

            // Annuler l'événement original
            e.Handled = true;
        }
        private void GlobalHookMouseMoveExt(object sender, MouseEventExtArgs e)
        {
            if (!_activateHook)
            {
                return;
            }

            // Remettre dans la fenêtre si dépasse
            int newX = e.X;
            int newY = e.Y;

            if (e.X >= _width - 1)
            {
                newX = _width - 1;
            }
            else if (e.X < 1)
            {
                newX = 1;
            }
            if (e.Y >= _height - 1)
            {
                newY = _height - 1;
            }
            else if (e.Y < 1)
            {
                newY = 1;
            }
            if (newX != e.X || newY != e.Y)
            {
                SetCursorPos(newX, newY);
                e.Handled = true;
            }

            // Détecter si dans zone de mouvement
            bool left, right, top, bottom, isZone;

            left   = newX <= EDGE_SCROLL_PX;
            right  = newX >= _width - EDGE_SCROLL_PX;
            top    = newY <= EDGE_SCROLL_PX;
            bottom = newY >= _height - EDGE_SCROLL_PX;
            isZone = left || right || top || bottom;

            if (!isZone)
            {
                _edgeZoneMouse = EdgeZone.NONE;
            }
            else if (left && top)
            {
                _edgeZoneMouse = EdgeZone.LT;
            }
            else if (left && bottom)
            {
                _edgeZoneMouse = EdgeZone.LB;
            }
            else if (right && top)
            {
                _edgeZoneMouse = EdgeZone.RT;
            }
            else if (right && bottom)
            {
                _edgeZoneMouse = EdgeZone.RB;
            }
            else if (left)
            {
                _edgeZoneMouse = EdgeZone.L;
            }
            else if (right)
            {
                _edgeZoneMouse = EdgeZone.R;
            }
            else if (top)
            {
                _edgeZoneMouse = EdgeZone.T;
            }
            else if (bottom)
            {
                _edgeZoneMouse = EdgeZone.B;
            }
        }