Как мне обработать стороннюю комбинацию клавиш, когда мое приложение активно?
В области уведомлений панели задач есть небольшая сторонняя программа, которая использует комбинацию клавиш Ctrl-F11 для выполнения задачи. Проблема в том, что я использую тот же ярлык, но мой скрыт другим. По сути, я не могу сделать свою вещь, когда пользователь нажимает Ctrl-F11, хотя мое окно является тем, которое в настоящее время активно. Я думал, что активное окно будет иметь приоритет в использовании комбинаций клавиш, но, видимо, это не так. Учитывая, что программа написана на.NET C#, как я могу получить приоритет ярлыка, когда мое приложение активно?
1 ответ
Если вы не можете изменить комбинацию клавиш в приложении в трее, и вы должны использовать ее в своем приложении. Экстремальным подходом может быть написание Windows Hook DLL на C++ или Delphi, фильтрация всех нажатий клавиш для Ctrl-F11 и отправка сообщения в ваше приложение.
Это не простая задача, есть проекты, которые подключают события Windows Keyboard к Code Project и т. Д. Вы можете адаптировать один из них. Когда вы получаете нажатие клавиши и ваше окно / форма активна, вы можете использовать SendMessage, чтобы отправить сообщение в ваше окно.
Это было бы последним отдыхом. Это зависит от того, насколько сильно это нужно.