Как подключить горячие клавиши в winforms или WPF из сборки .NET 2.0?

У меня есть сборка, нацеленная на .NET 2.0, чтобы быть совместимой с широким спектром приложений. При использовании с настольным приложением (winforms или WPF) я хочу подключать определенные горячие клавиши и всплывающие немодальные диалоговые окна. Сложнее всего найти решение, которое может быть реализовано в .NET 2.0, совместимом с WPF.

Для winforms я мог бы использовать RegisterHotKey или реализовать IMessageFilter и перехватите WM_KEYDOWN в PreFilterMessage, но они не работают хорошо с WPF.

Для WPF класс InputBinding очень удобен. хорошо, но это недоступно в .NET 2.0.

Идеальное решение:

  • Сборка в сборке, ориентированной на .NET

  • Сочетания клавиш для WPF или Winforms

  • Обеспечьте охват всего приложения, а не всей системы


person Jay Cincotta    schedule 05.12.2009    source источник


Ответы (1)


Вы можете создать универсальное решение на основе Windows API (общесистемный перехватчик). Дон Эспозито написал об этом отличную статью. Вот ссылка

http://msdn.microsoft.com/en-us/magazine/cc188966.aspx

Вы также можете написать ловушку приложения, если вам не нужна общесистемная ловушка. На самом деле это проще реализовать. Думаю, Дон тоже это освещает.

person Cyril Gupta    schedule 05.12.2009
comment
Спасибо, это отличная статья, но она написана в 2002 году и не обсуждает взаимодействие WPF, которое действительно составляет основу моей проблемы. - person Jay Cincotta; 05.12.2009