• 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 > 如何获得activex控件各导出函数的参数个数?

如何获得activex控件各导出函数的参数个数?

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

佚名通过本文主要向大家介绍了activex控件下载,activex控件下载xp,activex控件,activex控件被阻止,activex控件官方下载等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 如何获得activex控件各导出函数的参数个数?
描述:

CoInitializeEx(NULL,COINIT_APARTMENTTHREADED);
//
DISPID dispid;
OLECHAR *func = L"testocx";
DISPPARAMS dispparams;
IDispatch* pIDispatch = NULL;
// memset( &dispparams, 0, sizeof( DISPPARAMS ));
    dispparams.cArgs = 0;
dispparams.cNamedArgs = 0;
dispparams.rgdispidNamedArgs = NULL;
dispparams.rgvarg = NULL;
HRESULT hResult;
CLSID clsid;
wchar_t progid[] = L"OCXTEST.OcxtestCtrl.1";
if (FAILED(::CLSIDFromProgID(progid, &clsid)))
{
goto end;
}
// UuidFromString((unsigned char*)"4FCAE43F-9212-4ECE-A804-D25D792CCEE1", &clsid);
//得到IDispatch接口指针
    if (FAILED(::CoCreateInstance(clsid, NULL, CLSCTX_INPROC_SERVER, IID_IDispatch, (void**)&pIDispatch)))
{
goto end;
}
// 得到DISPID
if (FAILED(pIDispatch->GetIDsOfNames(IID_NULL, &func, 1, LOCALE_USER_DEFAULT, &dispid)))
{
goto end;
}
// 通过DISPID使用方法
hResult = pIDispatch->Invoke(dispid, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &dispparams, NULL, NULL, NULL);
if (FAILED(hResult))
{
printf("\nhResult = %x\n",hResult);
goto end;
}
在上面例子中Ocxtest控件是我自己开发的,我知道testocx函数的参数数量为0,但如果activex控件是别人开发的,我们怎么才能知道导出函数的参数数量?然后可以使用Invoke调用


解决方案1:

MK

解决方案2:


CComPtr<ITypeInfo> spTypeInfo;
hr = spDispatch->GetTypeInfo(0, 0, &spTypeInfo);
TYPEATTR* pTypeAttr = NULL;
hr = spTypeInfo->GetTypeAttr(&pTypeAttr);
for(USHORT i=0; i<pTypeAttr->cFuncs; i++)
{
  FUNCDESC* pFuncDesc = NULL;
  spTypeInfo->GetFuncDesc((UINT)i, &pFuncDesc);
  for (SHORT j=0; j<pFuncDesc->cParams; j++)
  {
    pFuncDesc->lprgelemdescParam[j]; // 这个结构中就是参数的类型信息,自己查资料去吧。
  }
}

解决方案3:

通过LoadTypeLib获取ITypeLib接口, 
通过ITypeLib::GetTypeInfo获取ITypeInfo接口,
调用ITypeInfo::GetFuncDesc获取FUNCDESC

解决方案4:

使用 “ActiveX Contrel Test Container" 将目标控件载入,
在 C />

解决方案5:

导入类型库。
类型库中有你所需要的调用信息。
#import "filename.ocx"


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

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

  • 讨论一下activex方面的经典书目!
  • 有没有dataedit控件啊急啊
  • 为什么VC做的控件在VB下面会有问题啊?请高手指点,高分求教啊
  • 紧急求助:关于ActiveX控件的使用问题!!
  • ActiveX控件的属性页
  • 在ActiveX控件中使用多线程后Fire事件的问题
  • 可以在ActiveX控件下的Dialog画曲线图吗
  • activex添加的属性在ie中为何传递不成功
  • 怎么才能获得微软Activex控件的帮助信息呢
  • 如何在单文档中使用ActiveX控件那?

相关文章

  • 2017-06-04 基于WebBrowser的浏览器程序如何加载IE工具栏和BHO?
  • 2017-06-05 一道有分,但却很无知的问题?
  • 2017-06-04 [求助]树控件和列表控件如何结合使用?
  • 2017-06-05 全局静态变量不同步问题,急!!!
  • 2017-06-04 有没可能支持daul接口的组件实现多个接口,怎么实现?
  • 2017-06-04 用标准C++不需要MFC或ATL的支持编一个可连接对象
  • 2017-06-04 请问各位帮忙,有没有这样一个控件??
  • 2017-06-04 关于"installActiveXbyC/C++"
  • 2017-06-05 问一个有关__declspecdllexport的问题
  • 2017-06-05 xmldom

文章分类

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

最近更新的内容

    • 为什么我的flash控件没有CallFunction这个函数?
    • activeX的Static控件上显示CHtmlView的问题,全部家当求解
    • Gdi+怎么调整文本的行距
    • 请大家帮忙看看我的com程序
    • 大家有什么好的方法在注册表中导入和导出注册表文件??
    • 求教各位大侠:MFCActiveX控件滚动问题
    • 如何让程序在用户登录后第一个运行呢?
    • 怎样结束一个线程?
    • 多线程串行通信问题,急急!
    • 第三方程序如何与MSWord程序交互?

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

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