原始输入API Windows 7 / Vista OS中的使用范围。它可以适用于整个环境还是仅适用于聚焦窗口?

时间:2011-08-25 15:57:38

标签: c# .net vb.net api sdk

超越业余开发人员,将我的部分工作外包并做其中的一部分。我一直在做词典/词库/拼写检查&建议应用程序,我试图在Windows环境中的所有应用程序上工作。

我已经使用挂钩获取关键的stokes并显示输出,因为此人正在键入定义和拼写建议。这并没有实现我想要的一切。适用于拼写检查和建议,但单击已存在的单词或触摸屏界面触摸单词不起作用。

我正在阅读MSDN上的Raw Input API,并认为这样可行,但我聘请的开发人员告诉我,RAW输入的范围仅在具有焦点的窗口上,因此无法进行低级挂钩。我正在考虑付出努力,但在努力之前想要获得第二个第四个观点。

MSDN参考:http://msdn.microsoft.com/en-us/library/ff468896%28v=VS.85%29.aspx

希望所有背景信息都不会带走问题。欣赏你的洞察力。

此致

约翰

1 个答案:

答案 0 :(得分:2)

是的,他是对的。 RawInput消息(WM_INPUT)仅为聚焦窗口生成。也许你可以以某种方式解决这个问题,但这不是主要问题。

RawInput确实为您提供了原始鼠标数据,正如其名称所示。该数据仅是相对鼠标移动或鼠标 - 增量数据。当鼠标到达屏幕边缘时,这些值仍会输入到消息中,最重要的是针对您的情况:它不会给您指针弹道(有关指针弹道的一些解释,请参阅本文:http://msdn.microsoft.com/en-us/windows/hardware/gg463319) 。这使得很难确定实际的光标位置。

您现在可以尝试模拟所有这些行为,并模拟光标位置,但指针弹道在不同版本的Windows上不一样。 XP的行为与Vista不同,我认为他们在Windows 7中再次改变了公式。

API建议,有些设备可以为您提供位置而不是相对数据,但我从来没有遇到过表现出这种行为的设备,甚至没有触摸屏(尽管这可能取决于驱动程序),并且它当然不适用于标准鼠标。