C++.子窗口

烈酒焚心 提交于 2020-03-11 19:57:07
#include <vector>
BOOL TraversalChildWnd(OUT std::vector<HWND> &vec, IN HWND hParent)
{
    vec.clear();
    try
    {
        HWND hEnumWnd = GetWindow(hParent, GW_CHILD);
        while (hEnumWnd)
        {
            vec.push_back(hEnumWnd);
            hEnumWnd = GetNextWindow(hEnumWnd, GW_HWNDNEXT);
        }
    }
    catch (...)
    {
        OutputDebugStringA(__FUNCTION__);
    }
    return vec.size() > 0;
}

int main()
{
    std::vector<HWND> vec;
    std::cout << TraversalChildWnd(vec, (HWND)0x003605A4) << endl;
    TCHAR sz[MAX_PATH] = { 0 };
    DWORD dwPid = 0;
    for each (HWND var in vec)
    {
        printf("窗口%08X", var);
        GetWindowThreadProcessId(var, &dwPid);
        printf(" 进程%08X|%d", dwPid, dwPid);
        ::GetWindowText(var, sz, MAX_PATH * sizeof(TCHAR) - sizeof(TCHAR));
        printf(" 标题%S", sz);
        memset(sz, 0, MAX_PATH * sizeof(TCHAR));
        ::GetClassName(var, sz, MAX_PATH * sizeof(TCHAR) - sizeof(TCHAR));      
        printf(" 类名%S", sz);
        printf("\r\n");
    }

    return 0;
}
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!