读书人

怎么得到光标下的非激活控件

发布时间: 2012-01-30 21:15:58 作者: rapoo

如何得到光标下的非激活控件!
各位大虾好,下面这个问题有点难:
我们能用API得到鼠标下的任何有句柄的控件或者窗体的HWND,但是如何才能得到一个在当前鼠标下面的并且属性为Disable(就是灰色的)控件的HWND!
只能用在VB中!
如果有谁知道请与我联系qq:644098664

[解决办法]
应该不难吧

先列举所有句柄

然后把每个句柄所属控件的坐标弄出来

最后再判断一下鼠标是在哪个控件上
[解决办法]
先用GetCursorPos函数获取鼠标位置,然后用WindowFromPoint函数获取控件句柄。
[解决办法]
不会忽略透明的
[解决办法]
ChildWindowFromPoint,ChildWindowFromPointEx

VB声明
Declare Function ChildWindowFromPoint Lib "user32 " Alias "ChildWindowFromPoint " (ByVal hWnd As Long, ByVal xPoint As Long, ByVal yPoint As Long) As Long
Declare Function ChildWindowFromPointEx Lib "user32 " Alias "ChildWindowFromPointEx " (ByVal hWnd As Long, ByVal pt As POINTAPI, ByVal un As Long) As Long
说明
返回父窗口中包含了指定点的第一个子窗口的句柄
返回值
Long,发现包含了指定点的第一个子窗口的句柄。如未发现任何窗口,则返回hWnd(父窗口的句柄)。如指定点位于父窗口外部,则返回零
参数表
参数 类型及说明
hWnd Long,父窗口的句柄
xPoint Long,点的X坐标,以像素为单位
yPoint Long,点的Y坐标,以像素为单位
pt POINTAPI,点的坐标,以像素为单位
un Long,(只适用于ChildWindowFromPointEx)控制对窗口的搜索。参见下表
CWP_ALL 测试所有窗口
CWP_SKIPINVISIBLE 忽略不可见窗口
CWP_SKIPDISABLED 忽略已屏蔽的窗口
CWP_SKIPTRANSPARENT 忽略透明窗口

读书人网 >VB

热点推荐