请问怎样等到焦点对象的句柄?(100分)

虾仔

Unregistered / Unconfirmed
GUEST, unregistred user!
我用getfocus得到的是自身应用窗口的对象句柄,请问如何得到其他应用窗口的对象的句柄?
 
GetActiveWindow可取得活动窗口的句柄
 
用 FindWindow可以找到其他窗口的句柄,然后再用 EnumChildWindows()得到该窗口
各个对象的句柄
 
ActiveControl.handle
不行就进行类型转换:
TWinControl(ActiveControl).handle
 
同意jsxjd
 
jsxjd讲的不错,但是用这个还是只能得到[red]自身应用窗口[/red]的焦点对象的句柄,不能得到[red]其他应用窗口[/red]的焦点对象的句柄。还有其他方法吗?
 
GetActiveWindow可取得活动窗口的句柄,可取得其它应用程序的窗口句柄
其它取得窗口控件的API函数没用过,可以找API中Get开头的函数看看
 
找过了,没有啊!
 
>>不能得到[red]其他应用窗口[/red]的焦点对象的句柄。还有其他方法吗?

来自:xuxincheng, 时间:2002-8-20 10:38:00, ID:1275281
用 FindWindow可以找到其他窗口的句柄,然后再用 EnumChildWindows()得到该窗口
各个对象的句柄

这个答案你没看到吗???

 
其它程序控件的句柄不是都能得到的,该控件的句柄必须未进行
保护。

可以用各种方法偿方式获得其它程序控件的句柄。
用 spy++ Winsight32 之类的程序跟踪该应用程序,看看该控件
的 ClassName 或 Title ,Caption.
然后用各种API函数,上面的函数可以用。以获得控件的 handle
接着就可以向该控件发送 WM_SETFOCUS 消息。
 
to wumeng:
============================================================
[blue]>>不能得到其他应用窗口的焦点对象的句柄。还有其他方法吗?

来自:xuxincheng, 时间:2002-8-20 10:38:00, ID:1275281
用 FindWindow可以找到其他窗口的句柄,然后再用 EnumChildWindows()得到该窗口
各个对象的句柄

这个答案你没看到吗???[/blue]
===============================================================
如何知道该窗口当前得到焦点的对象呢?

to jsxjd:我正是想做一个 spy 程序。
 
用WindowFromPoint(point),可以得到鼠标位置的窗口的句柄
 
不是要鼠标位置的,而是要得到焦点的。
 
GetFocus
函数功能:该函数获取与调用线程消息队列相关的窗口的句柄,
该窗口拥有输入焦点。
函数原型:HWND GetFocus(VOID)
参数:无。
返回值:为拥有键盘输入焦点的窗口句柄,若调用线程的消息队列没有相关的
持有键盘输入焦点的窗口,则返回值为NULL。
备往:尽管GetFocus返回NULL,但可能另一线程的队列与拥有输入焦点的窗口
相关。便用GetForeyroundWindow函数来获得用户目前工作的窗口。可以使用
AttachThreadlnPut函数把线程的消息队列与另一线程的窗口关联起来。
速查:Windows NT:3.1及以上版本;Windows:95及以上版本;Windows:1.0及
以上版本;头文件:winuser.h;库文件:user32.lib。
 
顶部