Как я могу поймать событие мыши, используя user32.dll - PullRequest
2 голосов
/ 11 апреля 2019

Я использую user32.dll для получения позиции курсора и имитации щелчка мыши и т. Д. Я использую событие MouseLeave в приложении WPF. Но я хочу поймать событие отпускания мыши (или наведения курсора мыши) из всех окон (нетолько в моем приложении WPF).Возможно ли перехватить это событие, используя user32.dll или что-то еще?

Ответы [ 2 ]

1 голос
/ 12 апреля 2019

Я сделал это так

[DllImport("user32.dll")]
    static extern bool GetCursorPos(out Point lpPoint);

    void StartGettingCursorPos()
    {
        Task.Run(new Action(() =>
        {
            while (true)
            {
                GetCursorPos(out Point point);
                Console.WriteLine($"X:{point.X}; Y:{point.Y}");
                Thread.Sleep(20);
            }
        }));
    }
0 голосов
/ 11 апреля 2019

Существует вызов Windows API, который позволяет получать события мыши, даже если их нет в окне:

SetCapture (HWND)

Вы можете объединить это с вызовом:

WindowFromPoint ()

чтобы узнать, в каком окне находится мышь

...