VC 通过CWebBrowser2 操作js函数

本文介绍了一种在Web浏览器环境中通过VB或C++调用JavaScript函数的方法。重点在于如何利用IWebBrowser2接口获取HTML文档对象,并进一步调用页面中定义的JavaScript函数。此方法适用于需要在浏览器加载完成后执行特定脚本功能的场景。

最关键一点是,要在web控件的OnDocumentComplete里ExecuteScriptFunction。。。其他地方都不保证能拿
到。。。

http://support.microsoft.com/kb/185127/zh-cn

#import "C:/winnt/system32/mshtml.tlb" // location of mshtml.tlb

   void CMyClass::ExecuteScriptFunction()
   {
      // m_WebBrowser is an instance of IWebBrowser2
      MSHTML::IHTMLDocument2Ptr spDoc(m_WebBrowser.GetDocument());

      if (spDoc)
      {
         IDispatchPtr spDisp(spDoc->GetScript());
         if (spDisp)
         {
            // Evaluate is the name of the script function.
            OLECHAR FAR* szMember = L"evaluate";
            DISPID dispid;

            HRESULT hr = spDisp->GetIDsOfNames(IID_NULL, &szMember, 1,
                                           LOCALE_SYSTEM_DEFAULT,
&dispid);

            if (SUCCEEDED(hr))
            {
               COleVariant vtResult;
               static BYTE parms[] = VTS_BSTR;

               COleDispatchDriver dispDriver(spDisp, FALSE);

               dispDriver.InvokeHelper(dispid, DISPATCH_METHOD,
VT_VARIANT,
                                       (void*)&vtResult, parms,
                                       "5+Math.sin(9)");
            }
         }
      }
   }

<HTML>
  <HEAD>
    <TITLE>Evaluate</TITLE>

    <SCRIPT>
      function evaluate(x)
      {
         alert("hello")
         return eval(x)
      }
   </SCRIPT>
  </HEAD>

  <BODY>
  </BODY>
</HTML>

经测试,这个js的func可以放在任意.js里

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值