zoukankan      html  css  js  c++  java
  • 使用IHTMLDocument3 的getElementById获取控件总是返回空的解决方法

    调用的参数书写都正确,可是每次调用pElem都返回空指针?

    CComPtr<IDispatch> pDisp = (IDispatch*)GetDocument();

    CComPtr
    <IHTMLDocument3> pDoc;

    HRESULT hr 
    = pDisp->QueryInterface(IID_IHTMLDocument3, (void**)&pDoc);

    if (SUCCEEDED(hr))

    {

    hr 
    = pDoc->getElementById(CComBSTR(szId), pElem);

    }

    原因:文档还没有加载完毕,需要等到文档加载完毕后再调用getElementById方法。

    解决方法:调用以下函数等待文档加载完毕

    bool WaitTillLoaded (int nTimeout)//毫秒数
    {
        READYSTATE result;
        DWORD nFirstTick 
    = GetTickCount ();

        
    do
        {
            m_pWebBrowser
    ->get_ReadyState (&result);

            
    if (result != READYSTATE_COMPLETE)
                Sleep (
    250);

            
    if (nTimeout > 0)
            {
                
    if ((GetTickCount () - nFirstTick) > nTimeout)
                    
    break;
            }
        } 
    while (result != READYSTATE_COMPLETE);

        
    if (result == READYSTATE_COMPLETE)
            
    return true;
        
    else
            
    return false;
    }


  • 相关阅读:
    【动态规划】合唱团
    【动态规划】抄近路
    【动态规划】机器人军团
    【贪心】赶作业
    【贪心】时空定位I
    【贪心】雷达问题
    【贪心】监测点
    【贪心】闭区间问题
    设计与实现
    Hello World
  • 原文地址:https://www.cnblogs.com/hjblog/p/1911037.html
Copyright © 2011-2022 走看看