Как я могу выполнить щелчок мышью в определенной позиции курсора, используя клавишу KeyUp? - PullRequest
0 голосов
/ 19 декабря 2018

Так что в конструкторе у меня есть это

KeyUp += WindowKeyUp;

и в методах, которые у меня есть это, где x и y это точка, которую я получаю от другого метода.

private void DoMouseClick(int x, int y)
{
    SetCursorPos(x, y);
    mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, x, y, 0, 0);
}

Итак, что я должен написать здесь, чтобы выполнить щелчок мыши в этой конкретной позиции курсора, когда я отпущу пробел?

private void WindowKeyUp(object sender, System.Windows.Input.KeyEventArgs e)
{
    if (e.Key == Key.Space)
    {
       //what to write here?
    }
}

Спасибозаранее!

1 Ответ

0 голосов
/ 19 декабря 2018

Я как-то согласен, что это может быть проблемой XY.Но так как мы не знаем реального варианта использования, я покажу, как вы можете получить последние x и y.

Вы можете реагировать на событие перемещения мыши, чтобы сохранить x и y и использовать эту информациюкогда вы получаете событие key up.

Это часть XAML:

<StackPanel KeyDown="StackPanel_KeyDown" MouseMove="StackPanel_MouseMove">

Вот обработчики: private void DoMouseClick (double x, double y) {// ...}

    private double m_x = 0.0;
    private double m_y = 0.0;
    private void StackPanel_MouseMove(object sender, System.Windows.Input.MouseEventArgs e)
    {
        var p = e.GetPosition(this);
        m_x = p.X;
        m_y = p.Y;
    }

    private void StackPanel_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
    {
        if (e.Key == System.Windows.Input.Key.Space) {
            DoMouseClick(m_x, m_y);
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...