大家好我在做一个测试软件需要遍历被检测软件里面的所有的按钮  和文本框  如果我已经得到该软件的窗口句柄  如何做到?谢谢

解决方案 »

  1.   

    EnmuChildWindows
    然后GetWindowClassName,看是不是button和edit就可以了
      

  2.   

    学习,看起来很像可以。
    GetWindowClassName 这个函数没找到呢
      

  3.   


    #define MAX_COUNT 256
    BOOL CALLBACK EnumChildWindowProc(HWND hWnd, LPARAM lParam)
    {
    TCHAR szBuf[MAX_COUNT] = {0};
    GetClassName(hWnd, szBuf, MAX_COUNT);
    TCHAR szText[MAX_COUNT] = {0};
    if((0 == _tcscmp(szBuf, _T("Button"))) || (0 == _tcscmp(szBuf, _T("Edit"))))
    {
    GetWindowText(hWnd, szText, MAX_COUNT);
    AfxMessageBox(szText);
    }
    return TRUE;
    }
    //调用
    EnumChildWindows(GetSafeHwnd(), EnumChildWindowProc, NULL);
      

  4.   

    CWnd   *pWnd;
    pWnd = GetWindow(GW_CHILD);
    CString ClassName;
    while(pWnd)
    {   
    GetClassName(pWnd->GetSafeHwnd(),ClassName.GetBuffer(255),255);
    //得到控件的类名,主要有Edit,Button,Static等等
    if(ClassName.Find(_T("Edit"),0)>=0){
    /// }
    if(ClassName.Find(_T("Button"),0)>=0){
    //
    }
    pWnd = pWnd->GetWindow(GW_HWNDNEXT);
    }
      

  5.   

    不好意思啊  大家我对CSDN不是很熟,大家回复了这么多我都没有收到消息,今天刚刚看到。谢谢大家  我先好好看看
      

  6.   

    需要遍历被检测软件里面的所有的按钮 和文本框   如果我已经得到该软件的窗口句柄 如何做到?
    ===========
    我觉得用FindWindowEx是不是更好一点
      

  7.   

    貌似ce下FindWindowEx函数不支持...
      

  8.   


    我本来说用FindWindowEx,可是貌似楼主不愿用,所以就改成EnumChildWindow了
      

  9.   


    有吗?我好像没有说不愿意用吧~~~只要能做出来就行~现在用EnumChildWindow能够做出来了。弱弱的问一下,FindWindowEx是只能获得窗口句柄吗?可以获得控件句柄吗?