问题 检测系统中任何位置的用户焦点和控制类型

ShavedJesus.

新成员
加入
3月17日,2021年
消息
4
编程经验
3-5
大家好,

我正在开发一个背景应用程序,该应用程序检测用户按下的键并相应地执行一些操作。

我已经开发了检测键压力的低级部分。我需要的是要理解的任何提示,在操作系统级别(也是在我的应用程序之外),哪个窗口被聚焦(我认为这样的东西应该做这项工作:

C#:
IntPtr foregroundWindow = GetForegroundWindow();
uint foregroundProcess = GetWindowThreadProcessId(foregroundWindow, IntPtr.Zero);
)
但是,大多是要了解用户是否专注于可以插入文本的控制。

给出:

我的申请在后台。用户打开Goog​​le Chrome,并开始在地址栏中键入URL。此时,我确实需要了解焦点是在护目镜Chrome应用程序上,并且用户正在文本框中键入文本。

有可能制作这个吗?如果是的话,我不是在提出完整的解决方案(即使是好的,也只是一个起点,因为我试图搜索但不成功。

提前非常感谢。
 

跳伞运动员

工作人员
加入
2019年4月6日
消息
2,735
地点
切萨皮克,va.
编程经验
10+
说什么?你正在开发一个键盘记?
 

ShavedJesus.

新成员
加入
3月17日,2021年
消息
4
编程经验
3-5
你好,

感谢您的回复。
它看起来很糟糕,但我不必记录任何东西,目的是完全不同的。
我想要实现的是在键入时拥有一种自动完成软件,就像您在智能手机上的那个一样。

谢谢。
 

跳伞运动员

工作人员
加入
2019年4月6日
消息
2,735
地点
切萨皮克,va.
编程经验
10+
您将运行的主要问题正在确定用户是否键入文本框。回到Win3.x天,这将相对容易,因为没有多少自定义控件,你可以简单地检查焦点的当前控件是否有类名"EDIT"。如果你现在快速到达,每个人都有自己的自定义控制。不是每个人都将使用一个简单的编辑框。您必须检测到当前控件的窗口类别,以查看它是否是众多可能像编辑框的众多。但这只是使用Classic Win32窗口控件的Windows应用程序的问题。如果应用程序是一个巨大的绘画画布,并且在其中绘制了一切,包括它的编辑框,那么您将无法进行检测。简单的例子:一个具有它自己的聊天窗口的DirectX游戏 - 您如何发现用户在该聊天窗口中键入?
 

ShavedJesus.

新成员
加入
3月17日,2021年
消息
4
编程经验
3-5
你好跳伞运动员。
非常感谢解释,我可以理解这一点,这是怜悯。
如果我认为如果用户类型2-3个字符(包括字母,数字和符号)他们键入文本?
但是,我看到的问题是,可能会发生自定义者认为他有专注于他所需要的文本箱,但他没有,因此处理角色不会有意义。

否则我需要只处理标准"textboxes/controls".
 

跳伞运动员

工作人员
加入
2019年4月6日
消息
2,735
地点
切萨皮克,va.
编程经验
10+
尝试运行spyxxx.exe和spyxx_amd64.exe并在Chrome,Edge和Firefox上拖动窗口搜索工具。看看你甚至可以获得任何子控件。我只有前两个,他们两个都只有一个巨大的窗口作为画布。尝试与任何现代WPF应用程序相同。我想你也会找到一个巨大的窗户帆布。我认为你会发现你的自占用实用程序的效用将受到严重限制。
 
最佳 底部