各位老师,c语言中已知父窗口标题,如何遍历获取所有子窗口句柄
本帖最后由 jtwc 于 2022-2-27 13:26 编辑各位老师,c语言中已知父窗口标题,如何遍历父窗口下的所有子窗口,并获取所有子窗口的句柄呢?谢谢了
#include <windows.h>
#include <stdio.h>
int main()
{
//1.通过父窗口标题获取父窗口句柄
HWNDhGameWnd1 = 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;
}
EnumChildWindows 枚举父窗口下面的所有子窗口 但是这个好像效率不是很高,稳定性一般 bester 发表于 2022-2-27 15:47
EnumChildWindows 枚举父窗口下面的所有子窗口 但是这个好像效率不是很高,稳定性一般
老师,该如何写呢?谢谢了 EnumChildWindows()函数的作用枚举子窗口(按顺序调用回调函数,并将子窗口的句柄传递给了回调函数)。函数原型:
BOOL WINAPI EnumChildWindows(
HWND hWndParent, //父窗口句柄
WNDENUMPROC lpEnumFunc, //回调函数
LPARAM lParam //自定义参数
);
回调函数的返回值将会影响到这个API函数的行为:如果回调函数返回true,则枚举继续直到枚举完成;如果返回false,则将会中止枚举
。函数原型如下:
BOOL CALLBACK EnumChildProc(
HWND hwndChild,//子窗口句柄
LPARAM lParam //参数
)
// 遍历每个子窗口,调用回调函数EnumChildProc
EnumChildWindows(hwnd, EnumChildProc, (LPARAM)&rcClient);
// 定义回调函数
BOOL CALLBACK EnumChildProc(HWND hwndChild, LPARAM lParam)
{
// TODO 操作子窗口hwndChild
return TRUE;
} unmask 发表于 2022-2-27 21:37
EnumChildWindows()函数的作用枚举子窗口(按顺序调用回调函数,并将子窗口的句柄传递给了回调函数)。函数 ...
谢谢老师,不过写不正确 谢谢各位老师,已解决
页:
[1]