如何检测C ++中当前所选/活动接口是否启用了绑定

问题描述 投票:-1回答:1

在Windows 7中(我不确定其他操作系统)当您在网页上时,按空格键会向下滚动几个像素。但是当你在一个可以完成输入的界面(如输入元素,文本区域,文字编辑器,代码编辑器,搜索栏等)时,按空格键显然会键入一个空格。

类似地,当所有打开的窗口或菜单都被最小化,并且您正在查看桌面,并且按下字母键而不是在某处键入的字母时,会产生哔声。

这表明可以“检测”打字功能的可用性。如果可以检测到它,很可能是使用C ++完成的。

我不知道该怎么称呼它。我试图找出使用谷歌,但我得到的一切似乎与此无关。我可能没有使用正确的关键字。

无论是什么,我正在创建一个C ++程序,我需要能够检测它(在if条件下)。像这样的东西

if (/*typing can be done*/) {
//Do something..........
}

或这个

if (/*typing can NOT be done*/) {
if( GetKeyState(VK_SPACE) & 0x8000 ) {
//Do something..........
}
}

我需要能够本地做到这一点。不特定于特定的控制台窗口或UI。

如果你能以任何方式帮助我解决这个问题,请不要这样做。并且请随意制作或建议相关的编辑,以改善这个问题,使其不那么模糊,更详细和更加重要。

c++ if-statement focus keyboard-events typing
1个回答
0
投票

您描述的功能属于运行具有焦点的窗口的程序,而不属于操作系统(尽管操作系统将至少部分地最终为该功能提供动力)。程序可以检测到击键并不奇怪,因为否则您将无法使用键盘将任何字符输入计算机。

但是,您不能仅使用if语句“检测”随机事件。 “如果”不是“何时”。您的计算机不会重复检查程序中的所有if语句,并在匹配时跳转到代码中的该位置。想象一下混乱!

一个程序足够复杂,具有图形界面几乎肯定有一个“事件循环”,这可以在它自己的代码中或隐藏在API调用中(如在本机Windows应用程序的情况下);这样的事件循环通常轮询发送到由程序管理的窗口的密钥。如果您没有事件循环(并且如果您的操作系统在按键处理时无法生成“信号”),则必须进行一次。

精确的细节超出了Stack Overflow答案的范围,但是通过指向教科书关于如何创建图形程序的方向,我使您能够发现在这些情况下如何处理输入和输出。

© www.soinside.com 2019 - 2024. All rights reserved.