0

У меня такой вопрос: как обрабатывать событие ввода определенной клавиши в приложении Windows forms, когда окно формы неактивно. Чтобы проще было понять, что именно мне нужно, расскажу о том, что я хочу написать: в событие формы KeyPress передается клавиша, нажатая с клавиатуры, если она соответствует условию, то Sendkeys отправляет сообщение о нажатии определенной клавиши. При активной форме все работает прекрасно, но как только я переключаюсь на любое другое окно(Браузер, игра, текстовый документ), оно не работает. Может я что-то делаю не так, заранее спасибо за помощь.

  • Слышал про хуки на клавиатуру - погуглите это слово, возможно это то, что вам надо – tym32167 Jan 04 '22 at 21:53
  • Это называется кейлоггер. Но зачем это вам, если вы не пишете программу-шпион - не понятно. Если вам надо обрабатывать горячие клавиши, то вот решение. – aepot Jan 07 '22 at 10:09
  • я пишу макрос для абуза армлета в dota 2. Решение нашел в использовании либы ahk. Метод Andrew не работает в игре, а вот ahk прекрасно себя показал. – Олександр Фалько Jan 08 '22 at 21:38

1 Answers1

3

нужно использовать WinApi для этого и отлавливать ивенты самой операционной системы. Эта статья поможет: http://www.dreamincode.net/forums/topic/180436-global-hotkeys/

Но проще будет наработки чужие использовать. Например, даный проект делает именно то, что тебе нужно, используя более чем простой синтаксис: https://github.com/fabriciorissetto/KeystrokeAPI. Долго разбиратся не придется.

  • все сработало, спасибо огромное, я много читал о win32, но т.к. я начинающий, то мне еще тяжеловато с ней разбираться) А тут прекрасный уровень абстракции, сразу все получилось – Олександр Фалько Jan 04 '22 at 23:16
  • Вы про горячие клавиши? Тогда такое решение уже здесь есть. https://ru.stackoverflow.com/a/1140664/373567 – aepot Jan 07 '22 at 10:11