做过JavaScript里调用C++函数的前辈进来看下

mfc121aba 2009-09-23 05:37:02
我想在JavaScript调用C++函数,在网上找到一篇相关文章
全文地址:
http://www.cnblogs.com/dlbrant/archive/2009/02/17/1392430.html

其中 在JavaScript 中先要做一个按钮
<button value="Click me" onclick="window.navigate('app:command&arg1=1&arg2=2')" />
按钮中调用C++函数
请帮我解释一下 app:command&arg1=1&arg2=2 是什么意思 他们起什么作用? 为什么我删除到只剩下app:依然好用呢?
...全文
442 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
congzhongxiao_57 2011-03-29
  • 打赏
  • 举报
回复
没看懂,LZ有答案吗
MoXiaoRab 2009-09-24
  • 打赏
  • 举报
回复
没错。IE编程的基本知识

通过接口传递的,你实现了接口的方法,就可以拦截到这些页面上的东西了
mfc121aba 2009-09-24
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 tr0j4n 的回复:]
是参数。

这个标题我觉得不好,其实是他在DocHostUIHandler中进行了处理,程序发现Js的一个按钮点击了,自己执行某些代码
[/Quote]

你的意思是说 我的应用程序本身发现了 JS的按钮被按下 然后自己调用了本身的函数?
那么JS下的信息 是怎么传递到应用程序上的呢? 请教
mfc121aba 2009-09-24
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 vctiro 的回复:]
引用 4 楼 mfc121aba 的回复:
引用 3 楼 vctiro 的回复:
引用 2 楼 mfc121aba 的回复:
引用 1 楼 wuxinyang 的回复:
你的意思是说在窗口里嵌入一个网页,然后通过网页调用C++的函数吗?


是啊  根据  链接地址提供的方法  已经好用了    就是他带入的参数app:command&arg1=1&arg2=2我不太明白是什么意思


相当于调用下列C++函数:
C/C++ codeapp:command(1,2);
app:command 应该是一个函数的名称。现在一般在BeforeNavigate中处理的情况比较多。你说的是不用在这个消息中处理就可以调用吗?


对啊  那个作者就是在BeforeNavigate里处理的。(1,2)是参数么?


对头,1、2是实参。那个函数的定义应该是这样子的:
C/C++ codeapp:command(int para1,int para2);
[/Quote]
也就是说 参数的个数 和内容我可以 自己决定 BeforeNavigate 里是一个总的调度
至于可以把 参数 提取出来 再进行 别的C++函数 调用 是吧?
MoXiaoRab 2009-09-24
  • 打赏
  • 举报
回复
是参数。

这个标题我觉得不好,其实是他在DocHostUIHandler中进行了处理,程序发现Js的一个按钮点击了,自己执行某些代码
vcTiro 2009-09-24
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 mfc121aba 的回复:]
引用 3 楼 vctiro 的回复:
引用 2 楼 mfc121aba 的回复:
引用 1 楼 wuxinyang 的回复:
你的意思是说在窗口里嵌入一个网页,然后通过网页调用C++的函数吗?


是啊  根据  链接地址提供的方法  已经好用了    就是他带入的参数app:command&arg1=1&arg2=2我不太明白是什么意思


相当于调用下列C++函数:
C/C++ codeapp:command(1,2);
app:command 应该是一个函数的名称。现在一般在BeforeNavigate中处理的情况比较多。你说的是不用在这个消息中处理就可以调用吗?


对啊  那个作者就是在BeforeNavigate里处理的。(1,2)是参数么?
[/Quote]

对头,1、2是实参。那个函数的定义应该是这样子的:
app:command(int para1, int para2);
yjgx007 2009-09-24
  • 打赏
  • 举报
回复
有两种方式, 第一种方式是实现你自已的External接口方式, 供js调用, 像window.external.ExternalMethod
另一种方式是先在c++代码中传递接口(作为参数)到js代码中, 然后, 由js代码调用接口方法.
mfc121aba 2009-09-24
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 vctiro 的回复:]
引用 2 楼 mfc121aba 的回复:
引用 1 楼 wuxinyang 的回复:
你的意思是说在窗口里嵌入一个网页,然后通过网页调用C++的函数吗?


是啊  根据  链接地址提供的方法  已经好用了    就是他带入的参数app:command&arg1=1&arg2=2我不太明白是什么意思


相当于调用下列C++函数:
C/C++ codeapp:command(1,2);
app:command 应该是一个函数的名称。现在一般在BeforeNavigate中处理的情况比较多。你说的是不用在这个消息中处理就可以调用吗?
[/Quote]

对啊 那个作者就是在BeforeNavigate里处理的。(1,2)是参数么?
vcTiro 2009-09-24
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 mfc121aba 的回复:]
引用 1 楼 wuxinyang 的回复:
你的意思是说在窗口里嵌入一个网页,然后通过网页调用C++的函数吗?


是啊  根据  链接地址提供的方法  已经好用了    就是他带入的参数app:command&arg1=1&arg2=2我不太明白是什么意思
[/Quote]

相当于调用下列C++函数:
app:command(1, 2);

app:command 应该是一个函数的名称。现在一般在BeforeNavigate中处理的情况比较多。你说的是不用在这个消息中处理就可以调用吗?
mfc121aba 2009-09-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wuxinyang 的回复:]
你的意思是说在窗口里嵌入一个网页,然后通过网页调用C++的函数吗?
[/Quote]

是啊 根据 链接地址提供的方法 已经好用了 就是他带入的参数app:command&arg1=1&arg2=2我不太明白是什么意思
mfc121aba 2009-09-24
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 tr0j4n 的回复:]
没错。IE编程的基本知识

通过接口传递的,你实现了接口的方法,就可以拦截到这些页面上的东西了
[/Quote]

那么 如何才算是 在C++里调用了JavaScript 或者 在JavaScript里调用了C++呢?
WuXinyang 2009-09-23
  • 打赏
  • 举报
回复
你的意思是说在窗口里嵌入一个网页,然后通过网页调用C++的函数吗?

3,055

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC HTML/XML
社区管理员
  • HTML/XML社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧