0

我正在尝试制作一个在您需要时会弹出的键盘,就像 iPhone 网络浏览器所做的那样。在 Windows 上,当用户在任何窗口上激活文本字段时应该会发生这种情况。

搜索后我打算尝试 EnumWindows 和 EnumChildWindows 枚举所有控件。如果可行(我怀疑),那么我如何判断哪个是活动的以及该控件是否接受文本输入?还是有更好的方法来实现我想要做的事情?

项目使用 C++ 和 Win32 API。

编辑:根据 rene 的评论,我现在可以使用 SetWinEventHook 函数和 EVENT_OBJECT_FOCUS 获取活动(子)窗口句柄。但我仍然无法确定它是否是用户可以输入文本的窗口。

调用 GetGUIThreadInfo 并将返回的 hwndCaret 句柄与 SetWinEventHook 回调返回的窗口进行比较可以部分工作。它适用于记事本和 Chrome 地址栏,但不适用于 MS Visual Studio 子窗口。

4

1 回答 1

1

看起来您描述的功能是 Windows 辅助功能的一部分:

WIN32 API

最终用户视角

概述

于 2012-07-31T14:33:38.877 回答