VC 通过CWebBrowser2 操作js函数

duilib CWebBrowser控件 C++调用js函数&&js中调用C++函数 C++和js相互调用是个有意思的事情。 一、js中调用C++函数。函数原型int g_FunSub(int x,int y); 调用方式如下: function CallCppFunSub(x,y) { var num = window.external.g_FunSub(x,y); 阅读详情

最关键一点是,要在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里

IWebbrowser2中C++与JavaScript的交互调用 JS调用C++ IWebbrowser2中C++与JS交互主要处理IDispatch中的两个接口 1、GetIDsOfNames 这里主要是把需要调用JS函数给编一个号,为什么函数要编号呢?建议看看COM的原理,大概是C++实现的COM调用机制主要是用的虚函数表,但是其他的脚本语言中并没有这个玩意,其他脚本需要调用函数时,只能通过函数的ID来找到对应的函数。 那么我们就 阅读详情

相关推荐

VC下面Web浏览器控件实现js脚本扩展

在你嵌入了浏览器的工程中,如果网页的脚本中能调用C++代码,那将是一件很惬意的事情,要实现这种交互,就必须实现脚本扩展。本工程就实现了脚本扩展的功能。

VC与JavaScript交互(二) ———— 调用JS函数

VC调用无参JS函数 VC调用有参JS函数 VC传递数据给JS函数 JS函数返回一个值给VC JS函数返回多个值给VC

软件架构农 2万+

Unity2D像素刀光实现:粒子方向控制与像素级渲染规范

像素风游戏中的刀光特效并非普通粒子动画,而是需严格遵循像素艺术原理的视觉暂留模拟。其核心在于将‘瞬时切割感’转化为程序可执行的渲染逻辑:通过禁用纹理滤波保障1:1像素锐度,绑定刀锋向量控制粒子运动方向,限定≤0.15秒生命周期匹配人眼暂留阈值,并采用Stretched Billboard实现动态拉伸拖影。该方案兼顾美术语义(如直劈、横扫、突刺)与工程约束(Sorting Layer分层、对象池复用、单粒子GPU优化),广泛适用于Unity2D平台的动作反馈系统,尤其适配《空洞骑士》《死亡细胞》类高节奏像素R

weixin_32390647的博客 281

webBrowser执行页面中的javascript

 webbrowser取得一个页面后,可以执行该页面中的脚本函数,比如可以用HtmlElement.InvokeMember()方法或者HtmlDocument doc = webBrowser1.Document;doc.InvokeScript(jsfun,new object[]...{jsParameter}); 那Java的HttpClient好像不可以? 

sclxf的专栏 3319

ISP Tuning实战:从零开始调校相机传感器的完整流程(附避坑指南)

本文详细介绍了ISP Tuning的完整实战流程,即如何从零开始调校相机传感器以优化成像质量。内容涵盖从黑电平校正、镜头阴影校正等基础标定,到自动曝光、伽马校正、色彩校正等核心画质调校,再到降噪与锐化的平衡策略,并提供了关键的避坑指南。掌握ISP Tuning是提升相机传感器性能、实现从‘能用’到‘好用’的关键技术。

weixin_32098457的博客 196

保姆级教程:在Windows 11上用VSCode和Conda搞定Depth-Anything-3(含常见报错修复)

本文提供在Windows 11系统上使用VSCode和Conda配置Depth-Anything-3的完整教程,涵盖环境搭建、依赖安装、常见报错修复及深度图生成实战。特别针对CUDA与PyTorch版本匹配、Hugging Face镜像加速等关键问题提供解决方案,帮助开发者高效实现计算机视觉中的深度估计应用。

weixin_30338481的博客 346

MFC中使用CWebBrowser2

1.加入CWebBrowser控件,建立关联变量 2.头文件包含 #include //atlbase.h atlconv.h 这2个文件在VC98/ATL下 #include "atlconv.h" #include "mshtml.h" //mshtml.h 在VC98/include下(VC6只能用1998年的这个版本) 3.获取网页源码: CStrin

少年乖 4366

CTF-MISC:BUUCTF练习汇总(1-25题,不包括签到题)

解题思路:该题比较基础,wireshark打开过滤HTTP流量包,追踪HTTP流后可以看到base64密文,解密后得到jpg图片,打开图片即可看到flag,在线OCR识别即可提取出flag值。解题思路:zip压缩包解压需要密码,图片中的盲文为解压的密码,解压后得到MP3音频文件,内容为典型的摩斯密码;解题思路:由题目可以为LSB隐写,使用StegSolve打开图片查看最低有效位得到PNG信息,另存为图片后发现是二维码,扫描后即可得到flag。对应摩斯电码为:-.-. - …-. .-- .–. . …

燕麦葡萄干的博客 1万+

VC中利用webbrowser执行自定义JS函数

转载请注明文章出处与作者信息。        最近查找了很多资料来执行自定义的JS函数,例如:function TC(){var t=document.title;return t;} 。 网上搜索的资料有蛮多,但是一直没能很快的完成。花了2天时间,终于完成了。特发博记忆与分享下。         1、首先在源文件里 加入导入库和空间声明:               #import

钟斌的博客 4573

嵌入式定点PID控制器:mrm-pid极简实现与实时控制实践

PID控制器是自动控制领域的基础算法,其核心在于比例、积分、微分三环节的协同调节。在资源受限的嵌入式系统中,传统浮点PID易受时序抖动、内存分配不确定性及FPU依赖影响,难以满足毫秒级确定性响应需求。定点PID通过整数运算替代浮点计算,显著提升执行周期稳定性与跨平台兼容性,成为电机控制、传感器补偿等实时场景的关键技术路径。mrm-pid库以位置式结构、int32_t增益参数、int64_t积分累加器和无动态内存设计,实现了超低开销(12–28 CPU周期)与完全可审计的闭环内核,天然适配Cortex-M系列

weixin_31659095的博客 570

麒麟系统grub被锁怎么办?双密码遗忘救援指南(实测V10 SP3版本)

本文详细介绍了麒麟系统V10 SP3版本在GRUB和root密码双遗忘情况下的救援指南。通过ISO镜像进入救援模式,结合单用户模式操作,实现密码重置与系统权限恢复,特别适用于等保合规环境。

384

VC Webbrowser操作全解(二)

接上一篇文章内容,本篇文章将讲解如何使用Webbrowser 操作HTML页面 二、对HTML页面元素的操作 (1)Input 值设置 xny::Integer SetInputText(LPCTSTR lpInputName, LPCTSTR lpText, LPCTSTR lpParentName, LPCTSTR lpPopFrameName) { xny::Integer nRet = nsny::eProbeErr::NYERR_FAIL; do { if ...

huangxvhui88的专栏 717

用一组可复现实验讲清 ABAP 内表 Standard / Sorted / Hashed 的性能差异

摘要(150字): SAP项目中性能问题常源于ABAP内表选型不当。标准表(STANDARD TABLE)写入快但查找慢(线性扫描),适合遍历场景;排序表(SORTED TABLE)保持有序,支持二分查找,适合范围查询;哈希表(HASHED TABLE)基于唯一键实现常数级查找,适合高频精确匹配。实验表明:标准表+BINARY SEARCH需预排序,成本可能高于直接使用排序表;哈希表在键匹配时性能最优。Gateway和RAP场景中,内表选型直接影响接口响应,建议根据读写负载(追加/遍历/精确查找)选择对应类

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 200

webbrower中JavaScript和c++的互相调用方法

Javascript 与 C++ 互操作的一种方式,但是有一定的局限性: C++ 调用 JS 时,要求是全局函数或变量。 对于 iframe 中的页面,是无法调用到的,要解决跨域等问题。这种情况下,不建议使用。 如果是简单页面,例如客户端用 web 来做界面时,用这个还是挺方便... 1、C++调用WebBrowser中的全局函数,变量等 (1)从C++的角度看WebBrowser中的...

Seanyxie Blog 685

100天精通Python(基础篇)——第20天:pip命令大全

pip升级命令:python -m pip install --upgrade pip pip install name //这里的name是要安装的第三方库名 pip install name -i http://mirrors.aliyun.com/pypi/simple/ 国内镜像源 阿里云:http://mirrors.aliyun.com/pypi/simple/ (推荐使用) 清华大学:https://pypi.tuna.tsinghua.edu.cn/simple 豆瓣:http:/

努力让自己发光,对的人才能迎着光而来 18万+

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

VC与JavaScript交互(四) ———— WebBrowser或CHtmlView中轻松屏蔽脚本错误(JavaScript)

1.什么是javascript脚本错误 1.1    概述 JavaScript脚本错误包含“运行时错误”和“语法错误”。 1.2    JavaScript“语法错误” JavaScript语法错误是指当 JavaScript语句违反了 JavaScript脚本语言的一条或多条语法规则时导致的错误。JavaScript语法错误发生在程序编译阶段,在开始运行该程序之前。 1.3    J

L_Andy的专栏 6449

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

VC6.0 MFC中WebBrowser控件禁止新窗口弹出的解决办法

在百度上找了很多方法,没有一个能够完美的解决这个问题。 我在XP SP3上测试,WebBrowser的OnNewWindow3事件中处理是无效的,不知道人家说XP SP2有效是怎么回事。 那种创建一个隐藏窗口出来的办法,我个人反正是不愿意去用,总之感觉不太好,而且据说这是目前唯一的解决办法。   后来实在没办法了,只能往土办法去想了,我们知道IE中有状态栏这个东西,当鼠标指向某个链接时,状

Gnorth的专栏 4536

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

IE浏览器下OCX控件的兼容问题(续集)——Javascript代码实现

本文主要讲解如何解决OCX控件在浏览器上使用的兼容性问题,并给出相应的Javascript代码实现。

笑梦码侬生 2108

[转载备份]WebBrowser 跨线程操作中的一些问题

WebBrowser 必须是单线程的, 如果我在另一个线程调用invoke, 那么这个invoke将返回错误.妥协的办法是通过发送消息(SendMessage)来变相实现跨线程控制. 但是其中有一个问题,必须要解决, 因为跨线程,所以计数问题必须要考虑. 对于invoke对象的 IDispatch 指针,必须增加计数,同时,对于DISPPARAMS中的 IDispatc...

weixin_30716141的博客 107

MFC的DLL库工程中使用CWebBrowser2控件

我在MFC的DLL工程中的一个dialog对话框中添加、调用CWebBrowser2的active控件时,发现动态创建dialog界面时一直会导致崩溃,dialog一直创建失败会,BOOL bCreate =  m_mapDlg-&gt;Create(CMapDlg::IDD,this);  此调用会一直返回0。始终没找到原因,后来发现是我的工程在创建工程向导时,没有添加active控件支持导致的...

qing666888的专栏 2703
上一篇: VC 输出打印机
下一篇: VC->CE 代码中的差异
minddancer
博客等级 码龄26年 5粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值