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

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

例如:

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有关.

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

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

转载注明原文:java – 程序可以区分用户密钥输入和程序密钥输入吗? - 代码日志