程序可以区分用户密钥输入和程序密钥输入吗?

时间:2013-03-26 19:01:06

标签: java c++ events key filtering

程序是否可以阻止来自其他程序的键输入,但不能直接从用户手中敲击键盘上的键来输入键输入?

例如:

ProgramA包含一个文本字段。

ProgramB是Windows屏幕键盘。

在ProgramA中选择文本字段后,我尝试按下字母' c'在屏幕键盘程序上,但它没有出现在文本字段中。

然而,当我按下这封信时,' c'直接来自我的键盘,它出现在ProgramA的文本字段中。

我知道关键事件是如何工作的,它们是如何排队的,以及我在c ++中看过BlockInput函数

http://msdn.microsoft.com/en-us/library/windows/desktop/ms646290%28v=vs.85%29.aspx

但该功能只是阻止所有输入。

我遇到了以这种方式过滤输入的程序,似乎无法弄清楚如何。我错过了一些完全明显的东西吗?

这个问题主要与Windows 7操作系统上的c ++有关。

1 个答案:

答案 0 :(得分:1)

您永远无法确定输入是否来自硬件。最简单的例子是一个自定义驱动程序,它将模拟由软件输入驱动的真实键盘。

一些奇特的想法可以是将麦克风连接到设备,听取声音/振动以进行输入过滤,但是你的意思是完整的硬件解决方案或应用程序,它将被提供给个人用户吗?