• 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 > 那位COM高手,帮看看。用IDispatch接口操作Excel。先谢了

那位COM高手,帮看看。用IDispatch接口操作Excel。先谢了

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

佚名通过本文主要向大家介绍了idispatch接口,idispatch,idispatch error 3092,idispatch error 3149,idispatch error 3088等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 那位COM高手,帮看看。 用IDispatch 接口操作Excel。先谢了
描述:

我想用IDispatch接口操作 Excel,代码如下:(我是用C++Builder写的,如果那位高手能用VC++实现这个功能,帮我用原始的IDispatch接口实现一下。不要用智能指针。谢谢了)
    IDispatch *pDisp = CreateOleObject("Excel.Application");
    OLECHAR *pMName = L"Quit";
    DISPID DispId;
    HRESULT hr = pDisp->GetIDsOfNames(IID_NULL, &pMName, 1, 
                                      LOCALE_SYSTEM_DEFAULT, &DispId);
    if(SUCCEEDED(hr))
    {
        ShowMessage(DispId);
    }
    DISPPARAMS disps = {NULL, NULL, 0, 0};
    hr = pDisp->Invoke(DispId, IID_NULL, LOCALE_SYSTEM_DEFAULT,  
                       DISPATCH_METHOD, &disps, NULL, NULL, NULL);
    if(SUCCEEDED(hr))
    {
        ShowMessage("Invoke OK");
    }
    我能正确调用GetIDsOfNames并获得Dispid,但是调用Invoke是,返回值正确,但是实际上,Excel的进程并没有结束。
    本来是想调用Visible这个属性的。但是他需要传递参数,也不知道参数的哪里写错了,调用Visible时,返回的hr都是错的。代码如下(Visible属性的Dispid可以正确获得):
    VariantInit(&vararg[0]);
    disps.rgvarg = vararg;
    disps.rgvarg[0].vt = varInteger;
    disps.rgvarg[0].lVal = LOCALE_USER_DEFAULT;
    disps.rgvarg[1].vt = varBoolean;
    disps.rgvarg[1].boolVal = VARIANT_TRUE;
    //disps.rgdispidNamedArgs = &DispId;
    DISPID mydispid[1] = {DISPID_PROPERTYPUT};
    disps.rgdispidNamedArgs = mydispid;
    disps.cArgs = 2,
    disps.cNamedArgs = 1;
    hr = pDisp->Invoke(DispId, IID_NULL, LOCALE_USER_DEFAULT,
                       DISPATCH_PROPERTYPUT, &disps, NULL, NULL, NULL);
    if(SUCCEEDED(hr))  //返回错误
    {
        ShowMessage("Invoke OK");
    }
   怎么办


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

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

  • 实现了IDispatch接口的组件和ActiveX控件用起来有什么不同呢?我觉得一样可以用在Web页面上,为什么ActiveX控件还要多实现那么多各种各样
  • 实现了IDispatch接口的组建,用vbscript怎么调用?
  • MSFlexGrid有一个Picture属性,是一个IDispatch接口指针,请问如何操作?
  • 怎样查询ActiveX控件的IDispatch接口每个ID代表函数
  • MFC实现IDispatch接口问题?
  • 如何hook住com接口的idispatch接口的虚函数invoke?
  • IDispatch双接口,自动化,是一样的东西吗
  • 如果一个组件实现IDispatch接口,那么能否是一个"自描述"的组件?
  • C++SDK怎么使用IDispatch接口实现函数管理
  • mfcdriller示例程序中,派生的IDispatch接口方法GetIDsOfNames的参数cNames是指什么?

相关文章

  • 2017-06-04 新手上来三把火,散分,外加一问DCOM
  • 2017-06-04 用ATL开发word插件的问题,请高手帮忙不胜感激
  • 2017-06-04 vc中的tabcontrol问题!!!
  • 2017-06-05 在VC中使用Teechart控件
  • 2017-06-05 进程间通信有那几种方法?
  • 2017-06-04 500分,那位大侠能够给出VC60下用ALT开发COM的具体说明
  • 2017-06-04 真见鬼,我要如何在我的idl文件中支持HTREEITEM数据类型呢?
  • 2017-06-04 求做聊天网站方面的高手
  • 2017-06-05 请问在一个线程中创建的CWnd指针能在另一个线程中使用吗?
  • 2017-06-04 关于使用COleClientItem类向应用程序嵌入Excel表格的问题

文章分类

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

最近更新的内容

    • VisualAssistX安装问题
    • HyperThreading技術與多線程求助)我覺是蠻難的
    • 在MFC动态连接库extern"C"BOOLPASCALEXPORTExportedFunctioninta函数中怎么调用其他类的成员?
    • 我用C++写的模块,在VB、java、C#,以及在Web里怎么使用?
    • Debug能够通过编译,Realse报告入口点没有定义。
    • 小弟没学过COM,有一个关于COM性能的疑惑?望指点!
    • 请问com里进程外组件怎么做成dll?用vc写的
    • 如何在线程中实现精度为1毫秒的延时,且不占用CPU
    • 如何在vs2010添加组件?
    • ocx中包含的资源倒出问题~~555晕ing

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

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