我想得到聊天室文本输入框的句柄,好比我对话框上有个按钮,点击按钮把得到输入框的句柄在相应的处理函数里处理,下面这个代码写在哪里?不在按钮对应的响应函数里吧(如果这样鼠标点击时,鼠标的位置在按钮上阿,得不到文本输入框的句柄的),给帮帮忙?代码写在哪?怎么办阿?你觉得很菜可我想不到阿
CPoint point;
GetCursorPos(&point);
HWND hWnd = WindowFromPoint(point);
或者如果用遍历窗口
EnumChildWindows(hwnd,EnumChildProc,0);//hwnd is parent window handle
BOOL CALLBACK EnumChildProc(HWND hwndChild, LPARAM lParam) 
{
char temp[100]; GetClassName(hwndChild, temp, sizeof(temp)); 
         if(!strcmp(temp,_T("Edit")))// Edit输入框
         
return TRUE;
}
怎样做呢?这又是怎么得到文本输入框的句柄的?帮帮忙,分觉得不够,我其他帖子还有

解决方案 »

  1.   

    我用 spy++ 看过 ie 窗口,看起来里面不是子窗口机制,可能需要调用 ie 的接口才能取到
      

  2.   

    用IWebBrowser2类来处理
    IE窗口和普通窗口不同不能用API得到句柄
      

  3.   

    可以把代码写在鼠标的OnMove(...)函数里,用ChildWindowFromPoint()函数来获得鼠标所指的对话框的句柄.
      

  4.   

    在IE中要得到某个窗口,必须使用IE的COM接口
    CString GetPassword(IHTMLDocument2 *pDoc2,POINT pt)
    {
    if(pDoc2==NULL)return "";
    CComPtr<IHTMLElement> pElement;
    HRESULT hr=pDoc2->elementFromPoint(pt.x,pt.y,&pElement);
    if(SUCCEEDED(hr)){
    CComPtr<IHTMLInputTextElement> pPwdElement;
    hr=pElement->QueryInterface(IID_IHTMLInputTextElement,
    (void**)&pPwdElement);
    if(SUCCEEDED(hr)){
    CComBSTR type;
    hr=pPwdElement->get_type(&type);
    if(SUCCEEDED(hr)){
    if(type==_T("password")){
    CComBSTR pwd;
    hr=pPwdElement->get_value(&pwd);
    if(SUCCEEDED(hr)){
    if(pwd.Length()!=0){
    CComBSTR msg;
    msg=pwd;
    CString str(msg);
    return str;
    }
    else{
    return "";
    }
    }
    }
    }
    }
    }
        pDoc2->Release();
       return "";
     }
      

  5.   

    在对话框中,要这样写:
    BOOL CALLBACK EnumChildProc(HWND hwndChild, LPARAM lParam);
    BOOL CSecuryEntryDlg::OnInitDialog()
    { EnumChildWindows(hwnd,FillFieldProc,LPARAM(CryptAppID));
    }
    BOOL CALLBACK CSecuryEntryDlg:: EnumChildProc(HWND hwndChild, LPARAM lParam) 
    {
             char temp[100];
    GetClassName(hwndChild, temp, sizeof(temp)); 
             if(!strcmp(temp,_T("Edit")))// Edit输入框
             
    return TRUE;
     
    }