• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > 关于IDispatchPtr接口的GetIDsOfNames函数问题

关于IDispatchPtr接口的GetIDsOfNames函数问题

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了getidsofnames,接口函数,接口构造函数,函数式接口,api接口函数等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 关于 IDispatchPtr接口的GetIDsOfNames函数问题
描述:

   今天遇到一个问题,请各位高手多多指教!
   小弟在实现 vc调用 WebBrowser控件里面的页面的javaScript函数,然后执行,发现了一个奇怪的问题,先贴代码,如下:
1)c++ 的代码
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"TinyMCE::setContent";
            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,
                                       "123456789");
            }
         }
      }
2)页面的javaScript代码
a:这个页面包含了一个js文件,里面代码如下
function checksInput(key)
{
   。。。。。。
}
b:这个页面还包含了另外一个js文件,先贴部分代码
function TinyMCE() 
{
      。。。。。。。
};
TinyMCE.prototype.setContent = function(html_content) 
{
    。。。。。。。
};
问题是这样的:
1)如果OLECHAR FAR* szMember = L"checksInput",c++的代码没有问题,可以正确执行javaScript函数。
2) 如果OLECHAR FAR* szMember = L"TinyMCE.prototype.setContent"或者"TinyMCE.setContent"或   者"TinyMCE::setContent",GetIDsOfNames都返回不了结果,像TinyMCE.prototype.setContent这样的函数,传入到GetIDsOfNames的时候应该写成什么样?需要变化吗?GetIDsOfNames只能够处理像 
function fuction_name()
{
  。。。。。
}
的函数吗?


解决方案1:

先创建TinyMCE的一个实例对象,然后再调用此实例的setContent方法。
如何创建TinyMCE的一个实例对象,参见:
vc++访问javascript(2)--IDispatchEx是动态脚本语言的基础
如何更自然的调用IDispatch接口的属性和方法,参见:
vb般的VC++开发(4)--调用IDispatch接口的属性和方法
 

解决方案2:

http://www.codeproject.com/KB/COM/jscalls.aspx

解决方案3:

还是execscript吧

解决方案4:

TinyMCE是一个类吧,你得先有个对象才能调用它的方法

解决方案5:

spDoc是MSHTML::IHTMLDocument2Ptr对象的接口,GetIDsOfNames只能获取MSHTML::IHTMLDocument2Ptr对象中的函数ID。
要想获取函数TinyMCE对象中的元素,必须先要获取TinyMCE对象的接口。

解决方案6:

自己用Javascript函数再包一层,保持普通的函数


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • mfcdriller示例程序中,派生的IDispatch接口方法GetIDsOfNames的参数cNames是指什么?
  • 都快过年了,IDispatch接口的GetIDsOfNames却以失败告终!!!
  • 加上<!DOCTYPEhtm>后,子线程中用GetIDsOfNames就取不到dispid了,请各位指教。
  • 关于IDispatchPtr接口的GetIDsOfNames函数问题

相关文章

  • 2017-06-04 巨怪的注册问题,谁能解决给200分,来者有分!
  • 2017-06-05 请问,这个错误要怎么改,errorC3646:“IWebBrowser2”:未知重写说明符
  • 2017-06-04 急问:是否可以创建ActiveX控件来修改客户端注册表,详情见内?
  • 2017-06-05 请教DLL的两个问题~
  • 2017-06-05 请问能否做到程序的自启动??,或者关闭某个程序让他再启动??谢谢
  • 2017-06-04 关于VC6中使用automation嵌入excel的疑问。。
  • 2017-06-04 IE中的ActiveX接收不到WM_DROPFILES消息,高手请进,急!
  • 2017-06-04 MFC坐标系
  • 2017-06-05 100分求如何能获取到DirectUI窗口中的控件句柄啊
  • 2017-06-04 CoCreateInstance方式启动的进程外组件,如何获得进程ID

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • spellcheck
    • 如何用自定义的方法移动自己的控件?
    • 怎么查询类型库中包含的有关消息??在线等待
    • winsock2h的引用问题
    • C++操作Word的字符替换操作报错?
    • ATL控件,建立时,没有选择连接点,以后怎样加上点接点?
    • 求教!!fatalerrorC1189:#error急!!
    • dll注册问题
    • DEF文件是怎么创建的?它又是做什么用的?
    • ATL开发指南第2版为什么所有的书店都没有卖的?电子版也没有

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有