MFC-FindWindow获取与指定窗口类名和窗口名相匹配的最顶层窗口的窗口句柄

 

    HWND hWnd2 = GetSafeHwnd();
    ::SetWindowText(hWnd2, _T("窗口句柄练习"));
    TCHAR ch[MAX_PATH] = { 0 };
    CString str;
    

    HWND hWnd = ::FindWindow(NULL,NULL);//获取与指定窗口类名和窗口名的最顶层窗口的窗口句柄
    //参数1:窗口类名  可以NULL
    //参数2:窗口名(窗口标题)   可以NULL

    while (hWnd != NULL)
    {
        ::GetWindowText(hWnd, ch, MAX_PATH);
        if (_tcslen(ch)>0)
        {
            str = ch;
            WriteConsole(hStdout, ch, _tcslen(ch), NULL, NULL);
            WriteConsole(hStdout, _T("\r\n"), _tcslen(_T("\r\n")), NULL, NULL);
            
        }

        hWnd = ::FindWindowEx(0, hWnd,NULL,NULL);//在窗口列表中寻找与指定条件相符的第一个子窗口句柄
        //该函数获得一个窗口的句柄,该窗口的类名和窗口名与给定的字符串相匹配。
        // 这个函数查找子窗口,从排在给定的子窗口后面的下一个子窗口开始。在查找时不区分大小写
        //参数1:hwndParent:要查找的子窗口所在的父窗口的句柄(如果设置了hwndParent,则表示从这个hwndParent指向的父窗口中搜索子窗口)
        //        如果hwndParent为 0 ,则函数以桌面窗口为父窗口,查找桌面窗口的所有子窗口
        //参数2:hwndChildAfter :子窗口句柄。查找从在Z序中的下一个子窗口开始。子窗口必须为hwndParent窗口的直接子窗口而非后代窗口。
        //                        如果HwndChildAfter为NULL,查找从hwndParent的第一个子窗口开始。
        //                        如果hwndParent 和 hwndChildAfter同时为NULL,则函数查找所有的顶层窗口及消息窗口
        //参数3:窗口类名
        //参数4:窗口名(窗口标题)。如果该参数为NULL,则为所有窗口全匹配
        //返回值:Long,找到的窗口的句柄。如未找到相符窗口,则返回NULL

    }

 

查看窗口的类、句柄、标题

看:https://www.cnblogs.com/liming19680104/p/17198189.html

 

以记事本为实例:

    HWND hWnd = ::FindWindow(_T("Notepad"), _T("sss.txt - 记事本"));
    //获取计算器句柄
    if (hWnd)
    {
        ::SetWindowText(hWnd, _T("句柄练习"));
        
    }
    else
    {
        AfxMessageBox(_T("句柄没找到"));
    }

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2023-03-07 14:03  天子骄龙  阅读(611)  评论(0)    收藏  举报