VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 1892|回复: 4

[求助] 通过窗口句柄获取的网页文档接口 如何调用网页中的JS代码

[复制链接]
20_avatar_middle
在线会员 发表于 2016-9-6 23:20:13 | 显示全部楼层 |阅读模式
5驿站币
  1. void CMyJs::GetDocInterface(HWND hWnd)
  2. {
  3.         CoInitialize(NULL);
  4.        
  5.         HRESULT hr;
  6.         HINSTANCE hInst = ::LoadLibrary(_T("OLEACC.DLL"));
  7.         if (hInst)
  8.         {
  9.                 LRESULT lRes;        //SendMessageTimeout后的返回值,用于函数pfObjectFromLresult的第1个参数
  10.                 UINT nMsg = ::RegisterWindowMessage(_T("WM_HTML_GETOBJECT"));
  11.                 ::SendMessageTimeout(hWnd, nMsg, 0L, 0L, SMTO_ABORTIFHUNG, 1000, (DWORD*)&lRes);
  12.                
  13.                 //获取函数pfObjectFromLresult
  14.                 LPFNOBJECTFROMLRESULT pfObjectFromLresult = (LPFNOBJECTFROMLRESULT)::GetProcAddress( hInst, _T("ObjectFromLresult") );
  15.                 if ( pfObjectFromLresult  )
  16.                 {
  17.                         CComPtr<IHTMLDocument2> spDoc;
  18.                         hr = (*pfObjectFromLresult)( lRes, IID_IHTMLDocument, 0, (void**)&spDoc );
  19.                         if ( SUCCEEDED(hr) )
  20.                         {
  21.                                 //获取文档接口
  22.                                 CComPtr<IDispatch> spDisp;
  23.                                 spDoc->get_Script( &spDisp );

  24.                                 //执行JS语句
  25.                                 _variant_t var1 = 2;
  26.                                 spDisp.Invoke2(L"order.cust.readCertWhenAuth2", &var1,NULL);
  27.                                 CComQIPtr<IHTMLWindow2> spWin=spDisp;
  28.                                 spWin->get_document( &spDoc.p );

  29.                                 //  Change background color to red
  30.                                 spDoc->put_bgColor( CComVariant("red") );
  31.                         }// else document not ready
  32.                 }// else Internet Explorer is not running
  33.                 ::FreeLibrary( hInst );
  34.         }// else Active Accessibility is not installed
  35.        
  36.         CoUninitialize();
  37. }
复制代码

这段代码是我从网上找的 调用JS时 未产生效果  求给个方法  谢谢





上一篇:无限流量APP的原理是怎样
下一篇:CAnimateCtrl为什么播放不了AVI视频?
83_avatar_middle
online_vip 发表于 2016-9-6 23:42:06 | 显示全部楼层
还是没明白你想表达什么
20_avatar_middle
ico_lz  楼主| 发表于 2016-9-7 09:16:06 | 显示全部楼层
帅气小书童 发表于 2016-9-6 23:42
还是没明白你想表达什么

我想使用这个web接口(CComPtr<IDispatch>)执行JS代码    用网上的那个例子没成功  又没有方法执行JS
51_avatar_middle
online_admins 发表于 2016-9-8 10:23:47 | 显示全部楼层
祸起蛋炒饭 发表于 2016-9-7 09:16
我想使用这个web接口(CComPtr)执行JS代码    用网上的那个例子没成功  又没有方法执行JS

判断一下,spDoc->get_Script( &spDisp ); 这条语句执行成功了没有?
20_avatar_middle
ico_lz  楼主| 发表于 2016-9-12 20:59:17 | 显示全部楼层
Syc 发表于 2016-9-8 10:23
判断一下,spDoc->get_Script( &spDisp ); 这条语句执行成功了没有?

这一句执行成功了
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2019-9-19 00:31

Powered by Discuz! X3.4

© 2009-2019 cctry.com

快速回复 返回顶部 返回列表