【问题标题】:Detect when user is activating a textfield on Windows检测用户何时在 Windows 上激活文本字段
【发布时间】:2023-03-26 21:59:01
【问题描述】:

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

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

项目使用 C++ 和 Win32 API。

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

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

【问题讨论】:

标签: windows winapi visual-c++


【解决方案1】:

您描述的功能似乎是 Windows 辅助功能的一部分:

WIn32 API

End User Perspective

Overview

【讨论】:

    猜你喜欢
    • 2017-06-26
    • 2019-06-06
    • 1970-01-01
    • 2017-09-26
    • 1970-01-01
    • 2013-08-30
    • 1970-01-01
    • 1970-01-01
    • 2014-06-08
    相关资源
    最近更新 更多