调用的参数书写都正确,可是每次调用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;
}

转载于:https://www.cnblogs.com/hjblog/archive/2010/12/20/1911037.html

使用IHTMLDocument3 的getElementById获取控件总是返回空的解决方法相关推荐

  1. VS2008 在IE8中 调试 ActiveX控件 无法进入断点的解决方法 设置VS2008和IE8 调试ATL MFC ActiveX控件

    VS2008 在IE8中 调试 ActiveX控件 无法进入断点的解决方法 设置VS2008和IE8 调试ATL MFC ActiveX控件 参考文章: (1)VS2008 在IE8中 调试 Acti ...

  2. getElementsByName和getElementById获取控件

    js对控件的操作通常使用getElementsByName或getElementById来获取不同的控件进行操作 getElementsByName() 得到的是一个array, 不能直接设value ...

  3. 登入系统后加载ActiveX控件已被阻止的解决方法

     在登入系统之后,系统会自动加载控件,所以浏览器安全级别太高的话是无法加载的,所以要对浏览器进行设置,下面是在加载控件时经常出现的错误,如下图. ActiveX控件已被阻止 交互不安全的提示 浏览 ...

  4. JS 获取控件的绝对位置

    JS 获取控件的绝对位置 js获取控件的绝对位置 已经控件宽度和高度 2010-08-11 13:07 //获取控件左绝对位置 function getAbsoluteLeft(objectId) { ...

  5. JAVASCRIPT 提示信息 主要是使用了获取控件的位置进行定位

    JAVASCRIPT 提示信息 主要是使用了获取控件的位置进行定位 <%@ Page Language="C#" AutoEventWireup="true&quo ...

  6. android自定义view获取控件,android 自定义控件View在Activity中使用findByViewId得到结果为null...

    转载:http://blog.csdn.net/xiabing082/article/details/48781489 1.  大家常常自定义view,,然后在xml 中添加该view 组件..如果在 ...

  7. .net OCX 无法获取“****”控件的窗口句柄,不支持无窗口的ActiveX控 新解决方法...

    2019独角兽企业重金招聘Python工程师标准>>> 朋友找我帮原来的软件加一个小功能,程序是用VB.NET 写的. 软件需要与外部串口设备通信,一只带串口功能的压力表. 应该时间 ...

  8. 【Android】获取控件的宽和高

    有时候我们须要在Activity的时候获取控件的宽和高来做一些操作,以下介绍三种获取宽和高的方式: 1. onWindowFocusChanged @Overridepublic void onWin ...

  9. Asp.net 2.0 中获取控件输出的Html代码 (转)

    将Asp.net 控件的呈现html获取,在不少场合会用到,比如生成静态页时 以下代码选自 Asp.net 2.0 高级编程 转自:Asp.net 2.0 中获取控件输出的Html代码 public  ...

最新文章

  1. TensorFlow2简单入门-单词嵌入向量
  2. Java数据结构和算法(六)——前缀、中缀、后缀表达式
  3. Building Android App Without an IDE
  4. android 缩进轮播图,如何利用纯css实现图片轮播
  5. FreeRTOS学习笔记——互斥型信号量
  6. 【面试题】序列化的 10 几个问题
  7. Python+tensorflow计算整数阶乘的方法与局限性
  8. [笔记]使用API函数 GetACP 获取Windows系统当前代码页
  9. 传输层协议(10):滑动窗口(4)
  10. Python 列表和元组学习
  11. TCP发送端突发性(burst)发送报文的成因
  12. billu_b0x靶场通关
  13. Java内存模型(JMM)详解
  14. davinci 达芬奇BI工具
  15. 了解如何在Microsoft Word中使用导航窗格
  16. C++语言程序设计第五版 - 郑莉(第十一章课后习题)
  17. 一个超简单的反编译任务(IDAPro、X32dbg)
  18. PHPExcel对excel的一些操作
  19. 微博如何做副业?微博上能做兼职吗?如何用微博兼职
  20. 超级火柴人高尔夫2+android,超级火柴人高尔夫2

热门文章

  1. Windows系统中使用SSH服务端和客户端
  2. httpclient java 过时_当年用httpclient时踩过的那些坑
  3. linux挂载CentOS yum,centos7本地挂载yum仓库
  4. ios java环境变量_iOS 环境变量配置(DebugReleaseTest)
  5. flock用法详解 linux_linux下一个C语言flock功能使用 .
  6. MATLAB图像处理之二值化以及灰度处理
  7. VSCode配置Python开发环境
  8. IDEA 访问Maven私服与上传组件
  9. MySQL中的DATE_SUB()函数和DATE_ADD()函数
  10. android开发答题app,Android APP编写简单答题器