如何获得儿童 HWNDS 的手柄?

How can I get Handles of child's HWNDS?

本文关键字:HWNDS 何获得      更新时间:2023-10-16

如何获取儿童HWNDS的句柄?

例如,我有一个名为"S1Window"的窗口,它有控件(静态文本、登录框等)

我需要一个登录框的句柄

我试过

BOOL CALLBACK EnumChilds(HWND hwnd, LPARAM lParam)
{
    char class_name[80];
    char title[80];
    GetClassName(hwnd, class_name, sizeof(class_name));
    GetWindowText(hwnd, title, sizeof(title));
    std::cout << "Window title: " << title << std::endl;
    std::cout << "Class name: " << class_name << std::endl << std::endl;
    return TRUE;
}
int _tmain(int argc, _TCHAR* argv[])
{
    HWND hnd=  FindWindowA("", "S1Window");
    EnumChildWindows(hnd, EnumChilds, 0);
}

但是我打开了所有的窗口

实际上,应该将NULL作为lpClassName参数而不是空字符串传递。试试这个:

int _tmain(int argc, _TCHAR* argv[])
{
    HWND hnd =  FindWindowA( NULL, "S1Window" );
    if( hnd == NULL ) {
        return 1;
    }
    EnumChildWindows( hnd, EnumChilds, 0 );
    return 0;
}