新的OICQ的窗体的句柄得不到吗?得到之后用EnumChildWindows()不就行了

解决方案 »

  1.   

    char  str[100];
    CWnd *notebook;
    POINT aa;
    CWnd *tempwin;aa.x = 80;
    aa.y = 680;
    notebook = FindWindow(NULL, "xxxxxx"); // xxxx代表qq窗口的标题
    tempwin = notebook->ChildWindowFromPoint(aa); //通过控件位置得到句柄
    //tempwin->GetWindowText(str, sizeof(str));
    //MessageBox(str);//得到“查找”
    //tempwin->ShowWindow(SW_HIDE);
    //tempwin->ShowWindow(SW_SHOW);
    ::PostMessage(tempwin->m_hWnd, BM_CLICK, 0, 0);
      

  2.   

    你好(开开)你的代码我看过了,可是不行,OICQ没有窗口标题呀,他是画上的呀?希望你还有方法。谢谢你了
      

  3.   

    我的这个代码比较杂。我讲一下我的思路,使用一个全局消息钩子WH_CALLWND,即把它做成一个DLL,
    在回调函数
    CallWndProc(int nCode,WPARAM wParam,LPARAM lParam)
    {
       if(wParam==WM_SHOW)
       {
          HWND hwnd=(HWND)lParam;
          int nStyle=GetWindowLong(hwnd,GWL_STYLE);
          if(nStyle & WS_POPUP)//如果为POPUP型窗口
          HWND htargetwnd=hwnd;//target hwnd;  
       }
    }
    这种方法有点麻烦,首先要监控窗口的显示,还要监控窗口类型,再进行判断,可能有别的好方法能解决。
      

  4.   

    用SPY看一下,根据ID号得到也可以句柄。