枚举子窗口,mark一下
#include <windows.h>
#include <stdio.h>
#include<conio.h>
BOOL CALLBACK EnumChildProc(HWND,LPARAM); //回调函数原型
int num;
HWND hwnd; //用于记录父窗口
char cTxt[255];
int main()
{
printf("请输入窗口标题...\n");
scanf("%s",cTxt);
hwnd =FindWindow(NULL,cTxt); //取得窗口句柄
if(hwnd) //如果窗口句柄不为空
EnumChildWindows(hwnd, (WNDENUMPROC)EnumChildProc,(LPARAM)NULL); //则开始枚举子窗口
// (WNDENUMPROC)EnumChildProc 可以理解成是一个参数,此参数的功能是用来找子窗口
system("pause"); //按任意键继续
}
BOOL CALLBACK EnumChildProc(HWND hwnd,LPARAM lParam) //回调函数
{
if(hwnd) //如果子窗口存在
{
num++ ;//记录子窗口的数目
char chText[255],chClass[255]; //用来储放窗口的标题
GetWindowText(hwnd,chText,255); //则开始获取窗口的标题
GetClassName(hwnd,chClass,255);
if(chText) //如果窗口标题非空的话 if(chText[0]) 也能?
{
printf("找到标题为: %s 的窗口,第%d个窗口\n",chText,num);
printf("类名:%s\n",chClass);
}
else
{
printf("找到标题为空的窗口,第%d个窗口\n",num);
printf("类名:%s\n",chClass);
}
}
return true;
}