В Windows 7 (я не уверен насчет других ОС), когда вы находитесь на веб-странице, нажатие клавиши пробела прокручивает страницу на несколько пикселей вниз. Но когда вы находитесь в интерфейсе, где можно печатать (например, элемент ввода, текстовое поле, редактор слов, редактор кода, панель поиска и т. Д.), Нажатие клавиши пробела, очевидно, вводит пробел.
Точно так же, когда все открытые окна или меню свернуты, и вы просматриваете рабочий стол и нажимаете буквенную клавишу, вместо того, чтобы где-то печатать букву, издается звуковой сигнал.
Это показывает, что доступность функциональности ввода может быть «обнаружена». И если это можно обнаружить, то, скорее всего, это можно сделать с помощью C ++.
Я не знаю, как это назвать. Я пытался выяснить, используя Google, но все, что я получил, казалось, не связано с этим. Я вероятно не использовал правильные ключевые слова.
Что бы это ни было, я создаю программу на C ++, где мне нужно уметь ее обнаруживать (в условии if). Что-то вроде этого
if (/*typing can be done*/) {
//Do something..........
}
Или это
if (/*typing can NOT be done*/) {
if( GetKeyState(VK_SPACE) & 0x8000 ) {
//Do something..........
}
}
И мне нужно быть в состоянии сделать это изначально. Не относится к конкретному окну консоли или пользовательскому интерфейсу.
Если вы можете чем-нибудь помочь мне в этом разобраться, пожалуйста, сделайте это. И, пожалуйста, не стесняйтесь вносить или предлагать соответствующие изменения, чтобы улучшить этот вопрос и сделать его менее расплывчатым, более подробным и конкретным.
Функциональность, которую вы описываете, принадлежит программе, выполняющей окно с фокусом, а не операционной системе (хотя операционная система, по крайней мере, частично, в конечном итоге обеспечит питание этой функции). Не должно быть сюрпризом, что программы могут обнаруживать нажатия клавиш, потому что в противном случае вы не сможете использовать клавиатуру для ввода каких-либо символов на ваш компьютер.
Тем не менее, вы не можете просто «обнаружить» случайное событие с if
заявление. «если» не «когда». Ваш компьютер не будет повторно проверять все if
операторы в вашей программе и переходить к этому месту в коде всякий раз, когда один соответствует. Представь себе хаос!
Программа, достаточно сложная, чтобы иметь графический интерфейс, почти наверняка имеет «цикл обработки событий», будь то в своем собственном коде или скрытый в вызове API (как в случае нативных приложений Windows); такой цикл обработки событий обычно опрашивает ключи, отправляемые в окно (окна), управляемое программой. Если у вас нет цикла обработки событий (и если ваша операционная система не может генерировать «сигнал», когда нажатие клавиши в противном случае не обрабатывается), вам придется его создать.
Точные особенности выходят за рамки ответа о переполнении стека, но, указав вам в направлении учебника о том, как создавать графические программы, я даю вам возможность узнать, как обрабатывается ввод и вывод в этих случаях.
Других решений пока нет …