吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1618|回复: 5
收起左侧

[求助] 各位老师,c语言中已知父窗口标题,如何遍历获取所有子窗口句柄

[复制链接]
jtwc 发表于 2022-2-27 13:15
本帖最后由 jtwc 于 2022-2-27 13:26 编辑

各位老师,c语言中已知父窗口标题,如何遍历父窗口下的所有子窗口,并获取所有子窗口的句柄呢?谢谢了
#include <windows.h>
#include <stdio.h>  

int main()

{                        
              //1.通过父窗口标题获取父窗口句柄
                        HWND  hGameWnd1 = FindWindow(NULL, "窗口5.0");
                        if (hGameWnd1 == 0)
                        {
                                printf("没有找到该窗口.\n");
                                getchar();
                                return 0;
                        }

                        //2.通过父窗口句柄获取进程ID
                        unsigned long dwPID1 = 0;
                        GetWindowThreadProcessId(hGameWnd1, &dwPID1);

                        if (dwPID1 == 0)
                        {
                                printf("获取ID失败.\n");
                                getchar();
                                return 0;
                        }

                        printf("窗口5.0进程PID:%d\n", dwPID1);

                        //3.通过PID获取进程句柄
                        //打开进程
                        HANDLE hProcess1 = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwPID1);
                        if (hProcess1 == 0)
                        {
                                printf("打开进程失败.\n");
                                getchar();
                                return 0;
                        }
           
                getchar();
                return 0;
        }

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

bester 发表于 2022-2-27 15:47
EnumChildWindows 枚举父窗口下面的所有子窗口 但是这个好像效率不是很高,稳定性一般
 楼主| jtwc 发表于 2022-2-27 17:43
bester 发表于 2022-2-27 15:47
EnumChildWindows 枚举父窗口下面的所有子窗口 但是这个好像效率不是很高,稳定性一般

老师,该如何写呢?谢谢了
unmask 发表于 2022-2-27 21:37
EnumChildWindows()函数的作用枚举子窗口(按顺序调用回调函数,并将子窗口的句柄传递给了回调函数)。函数原型:

BOOL WINAPI EnumChildWindows(
HWND hWndParent, //父窗口句柄
WNDENUMPROC lpEnumFunc, //回调函数
LPARAM lParam //自定义参数
);
回调函数的返回值将会影响到这个API函数的行为:如果回调函数返回true,则枚举继续直到枚举完成;如果返回false,则将会中止枚举
。函数原型如下:
BOOL CALLBACK EnumChildProc(
HWND hwndChild,//子窗口句柄
LPARAM lParam //参数
)

[C] 纯文本查看 复制代码
// 遍历每个子窗口,调用回调函数EnumChildProc
EnumChildWindows(hwnd, EnumChildProc, (LPARAM)&rcClient);

// 定义回调函数
BOOL CALLBACK EnumChildProc(HWND hwndChild, LPARAM lParam)
{
    // TODO 操作子窗口hwndChild
    return TRUE;
}
 楼主| jtwc 发表于 2022-2-27 21:51
unmask 发表于 2022-2-27 21:37
EnumChildWindows()函数的作用枚举子窗口(按顺序调用回调函数,并将子窗口的句柄传递给了回调函数)。函数 ...

谢谢老师,不过写不正确
 楼主| jtwc 发表于 2022-2-28 15:12
谢谢各位老师,已解决
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 16:48

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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