TC官方合作论坛

 找回密码
 立即注册
查看: 997|回复: 2

[问题] 得到键盘焦点的控件句柄。

[复制链接]
发表于 2017-5-21 18:42:28 来自手机 | 显示全部楼层 |阅读模式

马上加入TC

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 剑仙十号 于 2017-6-7 16:54 编辑

得到鼠标所在窗口的句柄:
var hwnd = 窗口获取鼠标所在句柄()


得到键盘焦点的控件句柄,tc使用哪个命令?

说得明白一些:
获取键盘输入焦点的控件的句柄。带有闪烁光标的,可以输入字符的窗口,的句柄。

如游戏窗口的喊话栏,
记事本的编辑框,
系统计算器的输入框。


=======================================================

重要。获取活动窗口输入焦点控件句柄的方法。
作者:leevans
发表于2012/3/4 15:31:14  1724人阅读
分类: SDK/API

GetForegroundWindow函数只能获取Windows当前焦点窗口(也可以叫顶层窗口)的句柄,如果需要获取该窗口中焦点控件句柄,就需要用到下面这段代码:
HWND hForeWnd = GetForegroundWindow();//获得当前激活的窗口句柄
DWORD dwSelfThreadId = GetCurrentThreadId();//获取本身的线程ID
DWORD dwForeThreadId = GetWindowThreadProcessId(hForeWnd, NULL);//根据窗口句柄获取线程ID
AttachThreadInput(dwForeThreadId, dwSelfThreadId, true);//附加线程
HWND hFocus = GetFocus();//获取具有输入焦点的窗口句柄
AttachThreadInput(dwForeThreadId, dwSelfThreadId, false);//取消附加的线程
hFocus就是焦点控件的句柄。
需要说明的一点,在测试过程中,以上代码对网页不起作用,其它窗口OK!

另外需要提醒一下,
GetForegroundWindow 和 GetActiveWindow 函数的区别:
GetActiveWindow 只是获取当前程序中(严格地说是线程中)被激活的窗口
GetForegroundWindow 是获取当前系统中被激活的窗口
两个函数的级别是不一样的, 一个是线程级、一个是系统级。
0 0
上一篇 下一篇

书评:
GetActiveWindow 只是获取当前程序中(严格地说是线程中)被激活的窗口。如主窗口,子窗口,孙窗口三者当中,被激活的那一个。
获取程序_线程队列中,被激活的窗口。
.
GetForegroundWindow 是获取当前系统中被激活的窗口。就是前台窗口_的主窗口。
获取系统_窗口队列中,被激活的窗口。
.
两个函数的级别是不一样的, 一个是线程级,一个是桌面级,系统级。

回复

使用道具 举报

发表于 2017-5-21 19:09:19 | 显示全部楼层
自己不会找命令?这些都有的! 没事多看看帮助
回复 支持 反对

使用道具 举报

发表于 2017-5-30 03:35:39 | 显示全部楼层
没事多看帮助的结果是帮助也不是很详细 就说了楼主知道的这么多
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条

关闭

小黑屋|TC官方合作论坛 (苏ICP备18045623号)

GMT+8, 2024-6-26 17:50 , Processed in 0.035413 second(s), 23 queries .

Powered by 海安简单软件服务部

© 2008-2019 版权所有 保留所有权利

快速回复 返回顶部 返回列表