`
happmaoo
  • 浏览: 4474525 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

EnumChildWindows的威力

阅读更多

版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处http://xinyistudio.vicp.net/和作者信息及本声明

很早就写过类似spy++和查看密码窗口的东西,一直想给这个小东西再加点特别的。

前段时间对软件安装注册发生了兴趣,有些软件如果你不输入正确注册码,那该死的“下一步”按钮就一直disable。这次我就让spy++彻底spy到底,把那个注册用的按钮置亮,让我轻松进入“下一步”,呵呵...。

我的想法是光标移到指定的窗口上后,探测这个窗口上到底有多少按钮,如果有,就将它们都Enable。

在这里我不想讨论怎样具体实现这个功能,但你要知道的是想得到这些被disable窗口(按钮)的句柄是根本无法通过WindowFromPoint这个API函数得到的,GetWindow也不要妄想了。

顺手查了下MSDN,看到EnumChildWindows可是个好东西,可以枚举一个父窗口的所有子窗口:

BOOL EnumChildWindows(
HWND
hWndParent, // handle to parent window// 父窗口句柄
WNDENUMPROC lpEnumFunc, // callback function // 回调函数的地址
LPARAM lParam // application-defined value // 你自已定义的参数
);

就这么简单,让我们再定义一个回调函数,像下面这样:

BOOL CALLBACK EnumChildProc(
HWND
hwnd, // handle to child window
LPARAM lParam // application-defined value
);

注意:这个回调函数要么是类的静态函数,要么就是一个全局的函数。

--------------------------------

在调用EnumChildWindows 这个函数时,直到调用到最个一个子窗口被枚举或回调函数返回一个false,否则将一直枚举下去。

有了上面的知识,我想你应该知道怎么做了。

分享到:
评论

相关推荐

    vb-EnumChildWindows所有窗口及子窗口句柄

    `EnumChildWindows`函数是Windows API提供的一种方法,用于遍历指定父窗口的所有子窗口,并对每个子窗口执行指定的操作,如获取句柄、显示信息等。在VB(Visual Basic)中,我们可以利用这个功能来实现更复杂的用户...

    EnumChildWindows 汇编源码 实例

    EnumChildWindows 汇编源码 实例 汇编

    EnumChildWindows 枚举反调试的软件源码

    这个标题提到的"EnumChildWindows 枚举反调试的软件源码"是一个示例,特别针对VB(Visual Basic)开发者,展示了如何利用EnumChildWindows来实现反调试的策略。 EnumChildWindows函数是一个在Windows API的User32库...

    vb-EnumChildWindows所有窗口及子窗口句柄免费版

    vb-EnumChildWindows所有窗口及子窗口句柄是一款vb枚举窗口枚举出所有父窗口和其对应的子窗口句柄信息获取查看工具,每个子窗口控件都具有一个在其兄弟中唯一的窗口句柄和ID值。对于句柄和ID这两者,知道其中的一个...

    API之EnumChildWindows

    本文将深入探讨`EnumChildWindows`这个API函数,它在Windows API中扮演着枚举并处理顶级窗口的所有子窗口的角色。`EnumChildWindows`是一个非常实用的功能,尤其在需要遍历和操作用户界面元素时。 `...

    VB6.0 EnumChildWindows 枚举反调试.rar

    `EnumChildWindows`是Windows API中的一个函数,它用于枚举指定父窗口的所有子窗口。这个知识点在Windows程序设计中非常关键,特别是在进行系统级操作和调试辅助工具的开发时。 `EnumChildWindows`函数允许开发者...

    遍历已知父窗里子窗所有句柄

    总之,遍历已知父窗口的子窗口句柄是通过Windows API实现的,涉及到的主要函数有`FindWindow`、`EnumChildWindows`以及一些辅助函数如`GetWindowText`和`GetClassName`。理解和掌握这些函数的使用,对于进行Windows...

    python中的句柄操作的方法示例

    通过窗口标题获取句柄 import win32gui hld = win32gui.FindWindow(None,uAdobe Acrobat) #返回窗口标题为Adobe Acrobat的句柄 通过父窗口句柄获取子句柄 ... win32gui.EnumChildWindows(parent, lambd

    delphi遍历窗体句柄

    除了`EnumWindows`函数,还有`EnumChildWindows`可以用来枚举特定窗口的所有子窗口。如果你需要获取的是某个父窗口下的所有子窗口,可以使用这个函数。 在实现类似QQ截图的功能时,你可能还需要获取窗口的大小、...

    枚举系统所有运行窗口及句柄(FindWnd)

    枚举时,如果需要包含子类窗口,可能需要使用`EnumChildWindows`函数,它会递归地枚举一个窗口的所有子窗口。 **隐藏窗口** 默认情况下,`EnumWindows`只会枚举可见的顶级窗口。若需枚举包括隐藏窗口在内的所有...

    遍历所有窗口

    这个过程可以通过操作系统提供的API函数来实现,例如在Windows操作系统中,我们可以利用`EnumWindows`和`EnumChildWindows`这两个核心API函数。 `EnumWindows`是Windows API中用于枚举顶级窗口的重要函数,它会按...

    xx枚举_枚举子窗口句柄的VB模块_

    在VB(Visual Basic)编程中,枚举子窗口句柄是一项关键技能,它涉及到Windows API的使用,主要是EnumChildWindows函数。这个函数允许开发者遍历并获取一个父窗口下的所有子窗口句柄,这对于实现对特定窗口的精细...

    vb枚举指定窗口下控件类名及句柄

    然后,可以使用`EnumChildWindows` API函数枚举指定窗口下的所有子窗口,也就是控件。`EnumChildWindows`需要一个回调函数来处理每个子窗口的句柄。 下面是一个简单的示例,展示如何使用VB来枚举桌面窗口并获取其...

    PB窗口遍历发送消息

    PB,全称PowerBuilder,是一种流行的面向对象的编程环境,主要用于开发企业级的应用程序。在本场景中,"PB窗口遍历发送消息"涉及到的是如何使用PB与操作系统进行交互,特别是通过API(应用程序接口)函数来遍历系统...

    vb-获取外部EXE句柄_vb获取SSCOM5程序的控件句柄_

    这里的关键API函数有`FindWindow`和`EnumChildWindows`。 1. `FindWindow`函数用于查找顶级窗口的句柄。这个函数接受两个参数:窗口类名和窗口标题。例如,如果我们知道SSCOM5程序的主窗口类名或标题,就可以使用`...

    Wince窗口枚举、读取电量和信号强度

    在Windows CE(简称WinCE)操作系统中,进行窗口枚举、读取电量和信号强度是开发者经常遇到的任务,尤其在开发嵌入式设备或者移动设备应用时。这些功能对于了解设备状态、监控系统运行以及优化用户体验至关重要。...

    枚举程序所有子窗口

    这个过程涉及到Windows API函数的使用,特别是`EnumWindows`和`EnumChildWindows`这两个函数。 首先,`EnumWindows`函数是Windows API中用于枚举顶级窗口的核心函数。它接受一个回调函数的指针和一个用户自定义的...

    获得窗体句柄函数总结

    但若要获取对话框中的子窗口句柄,则需结合上述函数使用,例如通过 `EnumChildWindows` 遍历对话框的子窗口,找到特定子窗口后返回其句柄。 综上所述,获得窗体句柄是Windows编程中的基础且关键的步骤,通过合理...

    VB编写的SPY 可获取 窗体标题 控件名字

    其中,`FindWindow`函数可以用来找到指定类名或标题的窗口,而`EnumChildWindows`则可以枚举一个父窗口的所有子控件。 描述中提到的“窗体标题”是指运行中的应用程序窗口显示在顶部的文字,通常反映了应用程序的...

    C#通过窗口名获取程序所有控件句柄

    EnumChildWindows函数能递归地枚举窗口的所有子窗口,我们需要为每个子窗口提供一个回调函数,该函数会被调用一次,每次传递一个子窗口的句柄。 ```csharp [DllImport("user32.dll", SetLastError = true)] ...

Global site tag (gtag.js) - Google Analytics