解决方案 »

  1.   

    网上有例子, 搜获取网页源码, 取这个地址也是一样的, 很久以前就有的, 不知对现在系统是否可以先取到这个窗体的句柄, 然后用这个句柄取到IHTMLDocument2, 然后 IHTMLDocument2.get_URL 
    主要部分过程BOOL NScript::GetHtmlDocFromWnd(HWND hWnd, IHTMLDocument2 **ppHtmlDoc)
    {
    CComQIPtr<IHTMLDocument> HtmlDoc;
    CComQIPtr<IDispatch> HtmlDispath;
    CComQIPtr<IHTMLWindow2> HtmlWin2;
    LPFNOBJECTFROMLRESULT fnObjectFromLresult;
    UINT uMessage;
    DWORD_PTR dwRetVal;
    HRESULT hr; CoInitialize(NULL);
    *ppHtmlDoc = NULL;
    fnObjectFromLresult = (LPFNOBJECTFROMLRESULT)NSys::GetDllProcAdders("OLEACC.DLL", "ObjectFromLresult");
    if(fnObjectFromLresult == NULL)
    return FALSE; uMessage = ::RegisterWindowMessage(_T("WM_HTML_GETOBJECT"));
    ::SendMessageTimeout(hWnd, uMessage, 0L, 0L, SMTO_ABORTIFHUNG, 1000, &dwRetVal);
    hr = fnObjectFromLresult((LRESULT)dwRetVal, IID_IHTMLDocument, 0, (void**)&HtmlDoc);
    if(FAILED(hr) || HtmlDoc == NULL)
    return FALSE; hr = HtmlDoc->get_Script(&HtmlDispath);
    if(FAILED(hr) || HtmlDispath == NULL)
    return FALSE; HtmlWin2 = HtmlDispath;
    if(HtmlWin2 == NULL)
    return FALSE;
    hr = HtmlWin2->get_document(ppHtmlDoc);
    if(FAILED(hr))
    return FALSE; return TRUE;
    }