C # низкоуровневая перехват мыши и обработка событий формы - PullRequest
6 голосов
/ 29 августа 2011

Я использую простую форму, сгенерированную VS 2010, которая содержит 2 кнопки, старт и стоп.Запуск запускает WH_MOUSE_LL с помощью SetWindowsHookEx, а останов останавливает ловушку.Хук работает отлично, и мне удается «заменить» среднюю кнопку мыши двойным щелчком мыши, единственная проблема, которую я имею, - это нажать кнопки «Свернуть / Развернуть / Закрыть» формы, кажется, что между событиями существует какая-то «гонка событий»крючок и события, вызываемые кнопками, упомянутыми выше.Это отражает тот факт, что когда вы нажимаете одну из этих кнопок, она некоторое время «нажимается», прежде чем завершает свое действие (например, сворачивание формы).Когда я щелкаю правой кнопкой мыши форму и выбираю одно из этих действий, оно немедленно реагирует на то же самое, когда я прекращаю ловушку и нажимаю одну из кнопок, упомянутых выше.Кто-нибудь сталкивался с таким поведением?

1 Ответ

2 голосов
/ 01 сентября 2011

Я испытал это и раньше.Я не уверен относительно точной причины, но я всегда решал проблему, слушая события, которые запускаются, когда мышь входит и покидает клиентскую область формы, окна, чего угодно.Вы можете использовать эти события, чтобы подключить и отсоединить мышь, и тогда вы получите нормальное поведение.

...