оператор if — как определить, включена ли привязка в текущем выбранном / активном интерфейсе в переполнении стека

В 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..........
}
}

И мне нужно быть в состоянии сделать это изначально. Не относится к конкретному окну консоли или пользовательскому интерфейсу.

Если вы можете чем-нибудь помочь мне в этом разобраться, пожалуйста, сделайте это. И, пожалуйста, не стесняйтесь вносить или предлагать соответствующие изменения, чтобы улучшить этот вопрос и сделать его менее расплывчатым, более подробным и конкретным.

-1

Решение

Функциональность, которую вы описываете, принадлежит программе, выполняющей окно с фокусом, а не операционной системе (хотя операционная система, по крайней мере, частично, в конечном итоге обеспечит питание этой функции). Не должно быть сюрпризом, что программы могут обнаруживать нажатия клавиш, потому что в противном случае вы не сможете использовать клавиатуру для ввода каких-либо символов на ваш компьютер.

Тем не менее, вы не можете просто «обнаружить» случайное событие с if заявление. «если» не «когда». Ваш компьютер не будет повторно проверять все if операторы в вашей программе и переходить к этому месту в коде всякий раз, когда один соответствует. Представь себе хаос!

Программа, достаточно сложная, чтобы иметь графический интерфейс, почти наверняка имеет «цикл обработки событий», будь то в своем собственном коде или скрытый в вызове API (как в случае нативных приложений Windows); такой цикл обработки событий обычно опрашивает ключи, отправляемые в окно (окна), управляемое программой. Если у вас нет цикла обработки событий (и если ваша операционная система не может генерировать «сигнал», когда нажатие клавиши в противном случае не обрабатывается), вам придется его создать.

Точные особенности выходят за рамки ответа о переполнении стека, но, указав вам в направлении учебника о том, как создавать графические программы, я даю вам возможность узнать, как обрабатывается ввод и вывод в этих случаях.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]