EnumChildWindows遍历窗口
2014-04-03 09:34
323 查看
根据MSDN EnumChildWindows 函数:
BOOL WINAPI EnumChildWindows(
_In_opt_ HWND hWndParent,
_In_ WNDENUMPROC lpEnumFunc,
_In_ LPARAM lParam
);
hWndParent: 需要枚举父窗口的句柄,如果此值为空EnumWindows函数
lpEnumFunc: 定义回调函数的指针 (回调函数名)
lParam: 传递给回调函数的值
BOOL WINAPI EnumWindows(
_In_ WNDENUMPROC lpEnumFunc,
_In_ LPARAM lParam
);
EnumWindows函数:通过句柄枚举屏幕上的所有顶层窗口,定义一个回调函数返回true则继续枚举直到最后一个顶层窗口回调函数返回FALSE
EnumChildProc回调函数:
BOOL CALLBACK EnumChildProc(
_In_ HWND hwnd,
_In_ LPARAM lParam
);
hwnd:子窗口的句柄
lParam:EnumChildWindows传递过来的值
定义一个回调函数用于接收子窗口句柄 EnumChildWindows 第二个参数WNDENUMPROC指向的回调函数EnumChildProc是函数名
遍历子窗口:
1.定义EnumChildWindows需要遍历的函数
2.定义一个回调函数,返回值为true 直到最后一个窗口或返回值为FALSE停止遍历
EnumChildWindows(hParent, EnumChildWndProc, (LPARAM)hListbox1);
BOOL CALLBACK EnumChildWndProc(HWND hWnd, LPARAM lParam)
{
HWND hListbox = (HWND)lParam;
if (NULL == hWnd) return FALSE;
if (NULL != hListbox && IsWindow(hListbox))
{
TCHAR szWndInfo[512] = {0};
TCHAR szWndTitle[256] = {0};
TCHAR szClsName[64] = {0};
GetWindowText(hWnd, szWndTitle, 256);
GetClassName(hWnd, szClsName, 64);
_stprintf(szWndInfo,
_T("窗口 %08X ")
_T("\"%s\" ")
_T("%s ")
_T("%s"),
hWnd,
szWndTitle,
szClsName,
IsWindowVisible(hWnd) ? _T("Visible") : _T("Invisible"));
SendMessage(hListbox, LB_ADDSTRING, 0, (LPARAM)szWndInfo);
}
return TRUE;
}
BOOL WINAPI EnumChildWindows(
_In_opt_ HWND hWndParent,
_In_ WNDENUMPROC lpEnumFunc,
_In_ LPARAM lParam
);
hWndParent: 需要枚举父窗口的句柄,如果此值为空EnumWindows函数
lpEnumFunc: 定义回调函数的指针 (回调函数名)
lParam: 传递给回调函数的值
BOOL WINAPI EnumWindows(
_In_ WNDENUMPROC lpEnumFunc,
_In_ LPARAM lParam
);
EnumWindows函数:通过句柄枚举屏幕上的所有顶层窗口,定义一个回调函数返回true则继续枚举直到最后一个顶层窗口回调函数返回FALSE
EnumChildProc回调函数:
BOOL CALLBACK EnumChildProc(
_In_ HWND hwnd,
_In_ LPARAM lParam
);
hwnd:子窗口的句柄
lParam:EnumChildWindows传递过来的值
定义一个回调函数用于接收子窗口句柄 EnumChildWindows 第二个参数WNDENUMPROC指向的回调函数EnumChildProc是函数名
遍历子窗口:
1.定义EnumChildWindows需要遍历的函数
2.定义一个回调函数,返回值为true 直到最后一个窗口或返回值为FALSE停止遍历
EnumChildWindows(hParent, EnumChildWndProc, (LPARAM)hListbox1);
BOOL CALLBACK EnumChildWndProc(HWND hWnd, LPARAM lParam)
{
HWND hListbox = (HWND)lParam;
if (NULL == hWnd) return FALSE;
if (NULL != hListbox && IsWindow(hListbox))
{
TCHAR szWndInfo[512] = {0};
TCHAR szWndTitle[256] = {0};
TCHAR szClsName[64] = {0};
GetWindowText(hWnd, szWndTitle, 256);
GetClassName(hWnd, szClsName, 64);
_stprintf(szWndInfo,
_T("窗口 %08X ")
_T("\"%s\" ")
_T("%s ")
_T("%s"),
hWnd,
szWndTitle,
szClsName,
IsWindowVisible(hWnd) ? _T("Visible") : _T("Invisible"));
SendMessage(hListbox, LB_ADDSTRING, 0, (LPARAM)szWndInfo);
}
return TRUE;
}
相关文章推荐
- ]用EnumChildWindows遍历窗口的方法
- 使用EnumChildWindows函数遍历窗体上所有控件
- EnumWindows/EnumChildWindows/ 枚举窗口 子窗口 调用实例
- 枚举子窗口/子窗体 EnumChildWindows 函数需要注意,它已经递归过了!
- 枚举子窗口EnumChildWindows()的应用
- 调用EnumChildWindows来枚举子窗口
- 获取子窗口句柄EnumChildWindows的威力
- 获取子窗口句柄EnumChildWindows的威力
- EnumThreadWindows枚举线程的所有窗口
- EnumThreadWindows枚举线程的所有窗口
- C#中捕捉对话框的文本内容 EnumChildWindows
- C#应用WindowsApi实现查找\枚举(FindWindow、EnumChildWindows)窗体控件,并发送消息。
- Python实现遍历windows所有窗口并输出窗口标题的方法
- EnumChildWindows (user32)
- EnumChildWindows 枚举子窗体句柄
- VC用EnumChildWindows枚举所有复选框,并勾选(取消勾选)
- EnumChildWindows的使用
- MFC EnumChildWindows的使用
- delphi 使用WindowsAPI回调函数EnumWindowsProc获取系统窗口列表
- 关于EnumChildWindows和EnumChildProc的应用