WEB开发网
开发学院软件开发VC Windows按键突破专家的原理 阅读

Windows按键突破专家的原理

 2007-03-15 21:46:08 来源:WEB开发网   
核心提示:相信在window按键突破专家没有出来的时候,很多人还不知道软件还可以这样编的吧,Windows按键突破专家的原理,本人也是一样,当知道有window按键突破专家这个软件时,如果用 RealChildWindowFromPoint 就只能得到“第一个子窗口”的窗口,而无法的到“最深层

相信在window按键突破专家没有出来的时候,很多人还不知道软件还可以这样编的吧,本人也是一样,当知道有window按键突破专家这个软件时,仔细去想一下它的实现原理,才突然恍然大悟,原来原理居然是这么的简单,为什么以前我就没有想到呢。

好了,不说那么多废话,直接进入主题,我先是说说按键突破的原理。实现按键突破的其实就是EnableWindow这个函数。

BOOL EnableWindow(
HWND hWnd,
BOOL bEnable
);

hWnd 指定将要启用或者禁用的窗口的句柄;

bEnable 若为TRUE则启用窗口,为FALSE则禁用窗口;

只要把EnableWindow的第二个参数设置为TRUE,第一个参数填控件的句柄就将原来被禁止的控件重新变为可用。

现在的主要的问题是怎么得到控件的句柄,用vc++的朋友,应该都用过spy++这个强大的工具吧,它可以得到任意控件的句柄,和窗口的类名,看完这篇文章后,读者们也可以自己做一个属于自己的spy++啦。

先介绍一下RealChildWindowFromPoint这个函数。该函数的功能是用来获取在指定点上的子窗口的句柄 :

HWND RealChildWindowFromPoint(
HWND hwndParent, // 父窗口的句柄
POINT ptParentClientCoords // 以客户坐标指定的点
)

返回值 :

返回其子窗口句柄

RealChildWindowFromPoint函数只能够查找到由 ptParentClientCoords 所得到的子窗口,但是无法得到最深层的窗口,也就是说如果有两个窗口重叠,就无法见到下面的窗口,这样的情况是经常出现的。

“第一个子窗口”的窗口和“最深层的窗口”的复选框窗口就重叠了,如果用 RealChildWindowFromPoint 就只能得到“第一个子窗口”的窗口,而无法的到“最深层的窗口”的复选框,所以只简单的调用这个函数是无法实现Spy++的功能的。

1 2 3  下一页

Tags:Windows 按键 突破

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接