Почему обработчик нажатия клавиши не видит PrintScreen? - вопрос №307184

При создании формы подписался на keyEventHandler(myFunction), почему если в функции myFunction ввести проверку на вводимые символы(e.KeyCode == Keys.D) все работает, за исключением если вместо Keys.D вставить Keys.PrintScreen.

private void myFunction(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.D)
MessageBox.Show(«123»);

При нажатии на клавишу D и любые клавиши кроме PrintScreen — вылазит месседжбокс. Вот с принтскрином не прокатывает — что делать?



Дополнение автора от 19.07.12 01:40:27

Воспользовался дебаггером — при нажатии на отличную от PrintScreen клавишу, курсор дебаггера построчно проходил по моей функции. При нажатии на PrintScreen — ни какой реакции(программа не видит клавишу PrintScreen).

19.07.12
2 ответа

Лучший ответ по мнению автора

по тому что ее система обрабатывает

я уже давал ссылку

http://www.professorweb.ru/my/WPF/base_WPF/level5/5_8.php

пробуйте PreviewKeyDown

если не поможет, тогда глобальный перехват пробуйте (так же как для свернутого приложения)

19.07.12
Лучший ответ по мнению автора

Другие ответы

Андрей, я работаю с Windows Forms

19.07.12

если не поможет, тогда глобальный перехват пробуйте (так же как для свернутого приложения)

что означает — так же как в вопросе

http://www.liveexpert.ru/topic/view/307486-kak-perehvatit-vvod-s-klaviaturi-esli-prilozhenie-svernuto?id=301571 

Вы с Евгением остановились на том что работает 2я ссылка, то есть

http://www.codeproject.com/Articles/19004/A-Simple-C-Global-Low-Level-Keyboard-Hook

ставим маленький эксперимент — берем пример проекта из этой публикации

http://shot.qip.ru/008z9U-1ZU0L5DO0/

и чуть-чуть меняем

http://shot.qip.ru/008z9U-1ZU0L5DO1/ 

смотрим что получится

http://shot.qip.ru/008z9U-1ZU0L5DO2/

ps так что Вы тоже не всегда достаточно внимательны ))

20.07.12
Посмотреть всех экспертов из раздела Технологии > .Net/C#
Пользуйтесь нашим приложением Доступно на Google Play Загрузите в App Store