• 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 > 有关CLSID

有关CLSID

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

佚名通过本文主要向大家介绍了clsid,clsid是什么,clsid注册表,注册表找不到clsid,检索com类工厂中clsid等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 有关CLSID
描述:

我定义了一个从已有的IXinterface派生的类IMyClass,而且也通过宏
DEFINE_GUID()得到了一个CLSID_MYCLASS,编译通过了。
可是使用这个类的时候,IMyClass *p=NULL ;
p->CoCreateInstanse(CLSID_MYCLASS,.....);
编译却不通过,编译器提示说是无法解析_CLSID_MYCLASS,是不是这个CLSID_MYCLASS我不能随便给?
后来我试了别的方法,不使用DEFINE_GUID,直接调用CLSIDFromProg()来获取CLSID_MYCLASS,可是结果还是不对(一直是GUID_NULL).
我怀疑是不是我的类IMyClass没有做成com,还没有注册,所以得不到他的CLSID?
刚刚学习使用com,请高手们指教!


解决方案1:

要包含定义CLSID的头文件!

解决方案2:

You must get the component's CLSID for CoCreateInstance()'s first parameter.

解决方案3:

你可以从VC的tool-->ole/com object viewer 中看看你的com有没有被注册!
如果有注册,找到ProgID="xxxx.xxxx"
#include "../XXXX.h"//这里请注意路径, XXXX是你的COM的头文件
#include "../XXXXi.c"//这里请注意路径
::CoInitialize( NULL );
It1 *MySrv = NULL;  //It1 为接口的类名
CLSID csid;
CLSIDFromProgID( OLESTR("xxxx.xxxx""), &csid)   //为该接口类的ProgID
if ( FAILED ( ::CoCreateInstance(
csid, NULL,
CLSCTX_INPROC_SERVER,
IID_It1,      // IID_It1为在srv1_i.c中定义的接口ID
(void **) &MySrv) 
))
return;
    int * re = new int;
MySrv->add(2,6,re);//add 是你的接口中定义的方法
CString s1;
s1.Format("result%d",*re);
::AfxMessageBox(s1);
MySrv->Release();
delete re;
::CoUninitialize();

解决方案4:


inclue "xx_x.c"

解决方案5:

CLSID 组件和客户程序都需要有定义,而且值必须一样。
组件说,我生成了一个用CLSID_MYCLASS标识的组件
客户说,我需要调用一个名叫CLSID_MYCLASS的组件
于是,暗号对接成功。
至于如何保证两个CLSID_MYCLASS值一致呢,可以让组件和客户程序共用一个CLSID_MYCLASS的声明头文件!也可以抄成两份,总之嘛……^_^

解决方案6:

呵呵,还要在自己的程序中定义CLSID;

解决方案7:

客户程序是指你调用这个组件的程序.
http://www.vckbase.com/document/viewdoc/?id=916
这篇文章中的做法,
#include "../MathCOM.h"//这里请注意路径
#include "../MathCOM_i.c"//这里请注意路径
就是将在组件中的CLISD定义包含了,
也可以拷贝定义到客户程序.

解决方案8:

客户端程序同样需要定义IMyClass的CLISD的


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

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

  • INTERFACE接口的clsid是怎么一回事?
  • ProgIDFromCLSID相关
  • GUID,CLSID,PROGID之间的关系?
  • 知道com对象的clsid,不知道它的其它接口的id,如何访问这些接口?
  • 如何实现COM中类的嵌套??
  • 为什么这个CLSID_WavDestFilter注册成功了,但是不能用
  • 我编的ocx依赖于某些非标准dll,打包成cab时需要在inf中写入这些dll的clsid吗?
  • CLSID怎么和对应的类联系起来啊?高手帮忙!
  • 做activex插件的cab包时,inf文件中的clsid应该是idl文件中的哪一个?或者随便编一个都没关系?
  • 我封装的dll如何知道clsid?

相关文章

  • 2017-06-05 我写了一个全局钩子放到dll里,问题是为什么有时能注入到别的进程,有时确不能,我是通过优化大师的进程管理来发现的
  • 2017-06-05 哪有现成的线程池类可以重用一下
  • 2017-06-04 问一个ATL添加WebBrowser后的键盘相应问题?
  • 2017-06-04 关于在OLE容器中保存WORD文件的问题?
  • 2017-06-04 急!微软出版的<visualc++60程序员指南>所附光盘
  • 2017-06-05 关于用dll子类化其他进程中窗口问题,高手指教!
  • 2017-06-04 COM+组件能否以DLL形式调用远程主机上的对象?
  • 2017-06-05 VC60中使用WindowsMediaPlay控件生成DLL文件在其它电脑用不了
  • 2017-06-04 请问我写的COM+客户端程序啥地方出错了?
  • 2017-06-04 VB中能用CoCreateInstanceEx吗?在线等,急!!!

文章分类

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

最近更新的内容

    • 如何在Excel中的sheet之后插入一个新的sheet?
    • 什么情况下,改写dll中的c文件后,不需要重新链接?
    • 请问我在对话框中添加了自己变的ActiveX按钮控件,为什么对话框不响应单击事件?谢谢!
    • 关于ActiveX(WindowsMediaPlayer)的使用!!紧急!!!
    • 请教关于键盘口操作方面
    • 结构化异常处理与CloseHandle的困惑
    • 懂VB和C++的朋友,请帮帮忙!!!
    • 编译错误急。。。。。求救。
    • 怎么连接一个数据库呢
    • 多线程,数据库高手,请进!

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

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