怎样枚举其它应用程序的控件句柄?比如怎样得到QQ登录框中的QQ号文本框(不用spy++)

解决方案 »

  1.   

    FindWindowFindWindowEx这两个结合使用就可以了
      

  2.   

    那如果我要得到泡泡堂这样的全屏游戏登录界面上的用户名与密码输入框的句柄又该如何?用spy++只能得到主窗体句柄,无法得到那些控件句柄,用EnumChildWindow也无法得到
      

  3.   

    EnumChildWindow可以枚举……另外,QQ的对话框是自己写的,好像不太一样,上次听说Spy++根本就抓不住那个对话框
      

  4.   

    得到QQ登录窗口的号码
    //枚举子窗口
    BOOL CALLBACK EnumDlgProc(HWND hwndChild, LPARAM lParam) 

    char buf[20];
    ::GetClassName(hwndChild,buf,20);
    HWND hwndver,hwndcom(NULL),hwndedt;
    CString str;
    if(strcmp(buf,"#32770") == 0) //注意QQ登陆窗口没有标题 :(
    {
    hwndver = FindWindowEx(hwndChild,NULL,"Static","QQ号码");
    if(!hwndver)
    {
    return FALSE;
    }
    while(hwndcom = FindWindowEx(hwndChild,hwndcom,"ComboBox",NULL))
    {
    hwndedt = GetWindow(hwndcom,GW_CHILD);
    if(hwndedt)
    {
    SendMessage(hwndedt,WM_GETTEXT,20,(LPARAM)buf);
    if(strlen(buf) > 0)
    {
    MessageBox(NULL,buf,NULL,MB_OK);
    break;
    }
    }
    }
    }
    return TRUE;
    }
    调用
    HWND hwnd = ::GetDesktopWindow();
    EnumChildWindows(hwnd, EnumDlgProc, 0);