获得窗口并枚举其子窗口

zzz可以调用函数FindWindow(窗口类名,窗口标题)获得窗口的句柄,然后调用EnumChildWindows(父窗口,回调函数名,参数)来获得父窗口下的子窗口的句柄,代码实现如下
ContractedBlock.gif ExpandedBlockStart.gif Code
#include <windows.h>
BOOL CALLBACK EnumChildProc(HWND hWnd,LPARAM lParam);
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{
    
char className[]="notepad";
    HWND hWnd
=::FindWindow(className,NULL);
    
if(hWnd)
    {
        ::EnumChildWindows(hWnd,EnumChildProc,
0);
        
return 0;
    }
    MessageBox(NULL,
"fail!","fail",MB_OK);
    
return 0;
}
BOOL CALLBACK EnumChildProc(HWND hWnd,LPARAM lParam)
{
    
char temp1[256],temp2[256];
    ::GetWindowText(hWnd,temp1,
255);
    wsprintf(temp2,
"hwnd:%x text: %s",hWnd,temp1);
    MessageBox(NULL,temp2,
"cwnd",MB_OK);
    
return true;
}
获得这些句柄以后就可以为所欲为了,能做的事如下:
FindWindow 按类名或窗口名(Caption)查找一个窗口
FindWindowEx 类似于FindWindow提供了更多的功能
GetLastActivePopup 针对指定的窗口,取回上一个活动的弹出式窗口的句柄
GetParent 获得指定窗口父窗口的句柄
GetTopWindow 获得指定窗口的第一个子窗口的句柄
GetWindow 如给定一个窗口句柄,该函数能取回具有特定关系的另一个窗口的句柄。如,第一个子窗口、父窗口或窗口列表内的上一个或下一个窗口。
SetParent 改变任何窗口的父窗口。
BringWindowToTop 使指定的窗口进入可见窗口列表的顶部,如它被部分或全部隐藏,则令其全部可见。同时,该窗口成为当前活动窗口。只有从前台线程调用时,才生效。
ChildWindowFromPoint 在规定的坐标取得某子窗口的句柄(如果有的话),这儿的坐标是指相对于父窗口的客户区坐标。
ChildWindowFromPointEx 与ChildWindowFromPoint相同,功能更强。
ClientToScreen 判断指定点在窗口客户区内的屏幕坐标。
GetClientRect 获得对窗口客户区进行表述的一个矩形(RECT)。这是以像素为单位判断客户区大小的一个简便的方法。
GetWindowPlacement 获得指定窗口的一个WINDOWPLACEMENT结构。该结构说明了窗口的状态。
GetWindowRect 用于获得一个矩形(RECT)结构,它描述了窗体在屏幕坐标系统中的位置。
MapWindowPoints 对某窗口客户区坐标内的一个或多个点进行转换,用另一窗口的客户区坐标表示。
MoveWindow 移动指定窗口的位置,并能改变它的大小。
OpenIcon 将一个最小化窗口恢复为原始状态。
ScreenToClient 针对屏幕内一个指定的点,用某个特定窗口内的客户区坐标表示它。
SetWindowsPos 更改窗口的位置和大小,并能修改它在内部窗口列表内的位置(这个列表起着控制窗口先是顺序)。
SetWindowPlacement 在一个WINDOWPLACEMENT结构的基础上,设置某窗口的特征。该结构描述了窗口的状态,以及它在最小化、最大化或正常显示时的位置。
WindowFromPoint 根据屏幕上一个指定的点,判断哪个窗口正位于它的下面。
GetClassInfo 取得指定窗口的类信息结构
GetClassInfoEx 效果类似于GetClassInfo,但增加了一些功能
GetClassLong,GetClassWord 用于获取窗口类信息
SetClassLong,SetClassWord 用于设置窗口类信息
GetClassName 获取窗口类名
GetDesktopWindow 获取整个桌面(屏幕)的窗口句柄
GetWindowLong,GetWindowWord 获取与窗口有关的信息
SetWindowLong,SetWindowWord 设置与窗口有关的信息
GetWindowText 获得窗口文本。它的效果大致等价于窗体或控件的Text属性
GetWindowTextLength 获得窗口文本的长度,用字符数表示。
IsChild 判断某窗口是否为另一窗口的子窗口或从属窗口。
IsIconic 判断某窗口是否处于最小化状态
IsWindow 判断指定的句柄是否为窗口句柄。
IsWindowEnabled 判断指定的窗口是否处于活动状态。
IsWindowVisible 判断某窗口是否可见。
IsZoomed 判断窗口是否处于最大化状态。
SetWindowText 设置窗口文本。大致等价于窗体或控件的Text属性。
AnyPopup 判断是否存在可见的弹出式窗口
CascadeWindows 令窗口在一个父窗口内层叠显示
CloseWindow 对指定的窗口进行最小化处理(如果它是个钉级窗口)对弹出式及子窗口无效
DestroyWindow 清除指定的窗口以及下属所有子窗口与包容窗口
DrawAnimatedRects 获得窗口打开或关闭的动画效果
EnableWindow 激活或屏蔽(禁用)指定窗口
FlashWindow 令指定窗口的标题闪烁显示
GetUpdateRect 判断需要更新的那个窗口的位置
GetWindowContextHelpId 取得与窗口关联在一起的帮助场景
InvalidateRect 指定窗口内需要更新的全部或部分客户区
IsWindowUnicode 判断一个窗口是否期望文本消息采用Unicode格式
LockWindowUpdate 允许或禁止描绘指定的窗口
RedrawWindow 一个功能强大的函数,用于控制全部或部分窗口重画
ScrollWindow,ScrollWindowEx 滚动显示窗口的全部或部分客户区
SetWindowContextHelpId 设置与窗口关联在一起的帮助场景
ShowOwnedPopups    隐藏或显示从属于指定窗口的所有保容弹出窗口
ShowWindow              用于设置窗口的状态,其中包括窗口的隐藏、显示、最小化、最大化以及激活等
ShowWindowAsync     类似于ShowWindow,增加了对其他进程内的窗口进行操作的能力
TileWindows                令窗口在一个父窗口内平铺显示
UpdateWindow           立即更新窗口内需要更新的任何部分
ValidateRect                指出全部或部分矩形已经更新,毋需再更新
有兴趣的话就一个一个试试吧:)

转载于:https://www.cnblogs.com/feiyucq/archive/2009/07/28/1533058.html

你可能感兴趣的:(获得窗口并枚举其子窗口)