CDHtmlDialog 关于获取输入焦点的有关问题(TEXTAREA INPUT)

CDHtmlDialog 关于获取输入焦点的问题(TEXTAREA INPUT)
C/C++ code

BOOL CDialogC::GetNeedKeydown()
{
    LPDISPATCH lpDisPatch = NULL;
    m_pBrowserApp->get_Document(&lpDisPatch);
    if( lpDisPatch == NULL )
        return FALSE;

    IHTMLDocument2* pDoc = NULL;
    HRESULT hr = lpDisPatch->QueryInterface(IID_IHTMLDocument2, (void **)&pDoc);
    if (pDoc == NULL)
        return FALSE;

    return GetNeedKeydown(pDoc);
}

int CDialogC::GetNeedKeydown( IHTMLDocument2* pDoc )
{
    try
    {
        HRESULT hr = S_OK;
        IHTMLElement* pActiveElement = NULL;
        hr = pDoc->get_activeElement(&pActiveElement);
        if (!SUCCEEDED(hr) || pActiveElement == NULL)
        {
            pDoc->Release();
            return FALSE;
        }

        BSTR bstrTagName = L"";
        CString strTagName = _T("");
        pActiveElement->get_tagName(&bstrTagName);
        strTagName = bstrTagName;
        strTagName.MakeUpper();
        CLog::WriteLog(strTagName.GetBuffer());
        if (strTagName.Compare("FRAME") == 0 || strTagName.Compare("IFRAME") == 0)
        {
            IHTMLFramesCollection2* pFrameCollection = NULL;
            hr = pDoc->get_frames(&pFrameCollection);
            if (!SUCCEEDED(hr) || pFrameCollection == NULL)
            {
                pDoc->Release();
                return FALSE;
            }
            pDoc->Release();

            long lFrameCount = 0;
            hr = pFrameCollection->get_length(&lFrameCount);
            if (!SUCCEEDED(hr) || lFrameCount <= 0)
            {
                pFrameCollection->Release();
                return FALSE;
            }

            for (long lFrameIndex = 0; lFrameIndex < lFrameCount; lFrameIndex++)
            {
                VARIANT vIndex;
                vIndex.vt = VT_I4;
                vIndex.lVal = lFrameIndex;
                VARIANT vResult;
                vResult.vt = VT_DISPATCH;
                hr = pFrameCollection->item(&vIndex, &vResult);
                if (!SUCCEEDED(hr))
                    continue;
                LPDISPATCH lpDispatch = (LPDISPATCH)vResult.ppdispVal;
                IHTMLWindow2* pWnd = NULL;
                hr = lpDispatch->QueryInterface(IID_IHTMLWindow2, (void **)&pWnd);
                if (!SUCCEEDED(hr) || pWnd == NULL)
                    continue;

                IHTMLDocument2* pSubDoc = NULL; 
                hr = pWnd->get_document(&pSubDoc);
                if (!SUCCEEDED(hr) || pSubDoc == NULL)
                {
                    pWnd->Release();
                    continue;
                }

                if (GetNeedKeydown(pSubDoc))
                {
                    pWnd->Release();
                    return TRUE;
                }
            }

            pFrameCollection->Release();
        }
        else if (strTagName.Compare("TEXTAREA") == 0)
        {
            pDoc->Release();
            return TRUE;
        }
        else
        {
            IHTMLInputTextElement* pHTMLInputTextElement = NULL; 
            hr = pActiveElement->QueryInterface(IID_IHTMLInputTextElement, (void **)&pHTMLInputTextElement);
            if (SUCCEEDED(hr) || pHTMLInputTextElement != NULL)
            {
                pDoc->Release();
                return TRUE;
            }
        }

        pDoc->Release();

        return FALSE;
    } 
    catch (...)
    {
        CLog::WriteLog("GetNeedKeydown( IHTMLDocument2* pDoc )");
    }

    return FALSE;
}


CDialogC 继承自CDHtmlDialog
CMainFrame::PreTranslateMessage
我在有字符键和数字键的地方 加入CDialogC 的判断函数查找当前页面是否有输入控件 input或textarea
有的话 就不拦截 把消息给CDialogC

现在的问题是我的主页面是在一个服务器A上 里面的一个子功能(页面)在服务器B上
这样就无法调用这个函数查找到输入控件input或textarea

如果这个2个是在一个服务器上就可以查找到input或textarea

请问如何处理这种跨域的问题呢!!!

------解决方案--------------------