枚举窗口及其应用

本文详细介绍了四种枚举窗口的方法,包括利用GetWindow、回调函数EnumChildProc和EnumWindowsProc,以及FindWindowEx。同时,文章探讨了枚举窗口的应用,如寻找指定类名或控件ID的窗口句柄,提供了多种实现方式,包括单一函数和类的形式。这些技术在Windows应用程序的调试和自动化中具有实用价值。
摘要由CSDN通过智能技术生成

 

枚举窗口及其应用


 

示例代码下载:枚举窗口及其应用(请不要直接使用迅雷下载)


1.下面请看几种枚举窗口的方式

 

一:利用GetWindow(ParentWnd, GW_CHILD);

void FindAllChildWnd(HWND ParentWnd) { HWND hChild = ::GetWindow(ParentWnd, GW_CHILD); for(; hChild!=NULL ; hChild=::GetWindow(hChild,GW_HWNDNEXT)) { TCHAR WindowText[30]={0}; ::SendMessage(hChild,WM_GETTEXT,(WPARAM)(sizeof(WindowText)/sizeof(TCHAR)),(LPARAM)WindowText); TCHAR ClassName[30]={0}; ::GetClassName(hChild,ClassName,sizeof(ClassName)/sizeof(TCHAR)); trace2(WindowText,ClassName); FindAllChildWnd(hChild); } } void CDemoDlg::OnButton1() { FindAllChildWnd(::GetForegroundWindow()); } 

 

二:利用回调函数EnumChildProc枚举所有子窗口

BOOL CALLBACK EnumChildProc(HWND hwnd,LPARAM lParam) { TCHAR WindowText[100]={0}; ::SendMessage(hwnd,WM_GETTEXT,(WPARAM)(sizeof(WindowText)/sizeof(TCHAR)),(LPARAM)WindowText); TCHAR ClassName[100]={0}; ::GetClassName(hwnd,ClassName,sizeof(ClassName)/sizeof(TCHAR)); trace2(WindowText,ClassName); return TRUE ; } void CDemoDlg::OnButton2() { ::EnumChildWindows(::GetForegroundWindow(),EnumChildProc,NULL); } 

 

三:利用回调函数EnumChildProc枚举所有可见的桌面窗口

BOOL CALLBACK EnumWindowsProc(HWND hwnd,LPARAM

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值