Я хотел бы получить состояние ключей Ctrl
в том месте, где у меня нет формы.WinForms Извлечение состояния клавиатуры без формы/UserControl
Обычно для получения состояния ключа я бы использовал события Control_KeyDown/KeyUp. Однако код, который должен знать, нажат ли Ctrl, находится вне любой формы. Отображается форма, но код предполагается не, чтобы зависеть от этой формы, но сам определял состояние ключа.
Наверняка есть способ сделать это, только мне не удается найти его в Google.
Обратите внимание, что хотя код не имеет «иметь» доступную форму, это все еще приложение WinForms, поэтому, возможно, инфраструктура предоставляет мне некоторый класс/объект для достижения этой цели.
фон:
Во время фазы запуска приложения, я хочу один шаг, чтобы вести себя differntly, если клавиша Ctrl нажата в данный момент. На этапе запуска отображается заставка, но код запуска не знает об этом. Вместо этого он сообщает о прогрессе в обратном вызове и этот обратный вызов обновляет заставку.
Если я использую заставку для извлечения события KeyDown, я заставляю код запуска зависеть от этого заставки, который вводит круговую зависимость. Я хочу сохранить свободу, чтобы удалить заставку и заменить что-то другое.
Означает ли это, что ваше приложение должно знать, если Ctrl нажата, независимо, какое приложение является активным один? Итак, если вы работаете в любой программе и нажимаете Ctrl, вы хотите, чтобы ваша программа ее поймала? В этом случае вы используете клавиатурный крючок. Если вы подтвердите это, я могу дать вам несколько указателей. –
@ Øyvind: Нет необходимости замечать Ctrl, если другое приложение находится впереди. На самом деле было бы даже лучше, если Ctrl не зарегистрирован * в этом случае (см. Мое обновление о предыстории моего вопроса). – chiccodoro