程序能区分用户键输入和程序键输入吗?

Can a Program Differentiate between User Key Input and Program key Input?

本文关键字:输入 程序 能区 用户      更新时间:2023-10-16

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

例如:

ProgramA包含一个文本字段。

ProgramB为Windows屏幕键盘。

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

然而,当我直接从键盘上按下字母'c'时,它出现在ProgramA的文本字段中。

我知道键事件是如何工作的,它们是如何排队的,我已经看到了c++中的BlockInput函数

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

但是该函数只是阻塞所有输入。

我遇到过用这种方式过滤输入的程序,但似乎不知道是怎么回事。我错过了什么明显的东西吗?

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

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

一些奇特的想法可以附加麦克风到设备,听声音/振动输入过滤,但你是指完整的硬件解决方案或应用程序,将给个人用户?