社区
ATL
帖子详情
高分请教:有关ActiveX的一些问题
iwin
2000-07-13 07:02:00
1. 自己写.idl文件时怎样确定一个uuid?
2. 使用QueryInterface(),CoCreateInstance()等函数时,往往要知道一个CLSID或FactoryID或REFID之类的ID号,如何得到这些ID号?本人初学ACTIVEX编程,想请教这些ID号有什么作用。
请各位高手尽量详细地讲解,最好有简单源码实例。
...全文
227
4
打赏
收藏
高分请教:有关ActiveX的一些问题
1. 自己写.idl文件时怎样确定一个uuid? 2. 使用QueryInterface(),CoCreateInstance()等函数时,往往要知道一个CLSID或FactoryID或REFID之类的ID号,如何得到这些ID号?本人初学ACTIVEX编程,想请教这些ID号有什么作用。 请各位高手尽量详细地讲解,最好有简单源码实例。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
iwin
2000-07-18
打赏
举报
回复
感谢SOFTDOCTOR和JGTM2000的热心指教!!!
JGTM2000
2000-07-15
打赏
举报
回复
1,UUID即GUID,可以用微软的工具GUIDGEN程序获得,也可以自己写个小程序,用CoCreateGUID函数生成。在COM世界里,一切事物都以一个GUID唯一标示,所以你新定义的接口就要用一个新生成的GUID。
2,用CLSIDFromProgID函数可以把一个程序ID转换为相应的COM服务器的ClassID。这个ClassID就可以被CoCreateInstance用来创建指定对象。当然,对于Excel这样的程序,创建实例比较常用的是CoGetObject(利用Moniker)。
3,对于指定的COM对象,其相应的GUID(如ClassID,IID等)都是永远不能变的。当然,COM对于某些问题有一些动态的策略实现更大的灵活性,如组件集(Component Category)就利用了TreatAs方式实现了动态缺省组件的定义。
softdoctor
2000-07-14
打赏
举报
回复
首先uuid是一个 128 BIT的标识符,原则上可以任意确定,但如果任意确定就失去了他的本身的含义:全球统一标识。微软的获得CLSID的方法被认为是最标准的方法,即结合机器的网卡号,及当前时间以及其他一些与硬件相关的参数生成,用此种方法,基本能保证开发用户所生成的UUID不同,但当两台机器都没网卡的情况下,同时生成UUID,相同的几率就比较大了。
UUID 是标识COM对象的很好的解决办法,以为COM对象必须能被所有用户所认识,而且COM对象要支持网络,所以每个COM对象在全世界范围内必须有唯一的标识,这样才能不被混淆。
开发COM时,如果用VC的话有两个途径获得确定UUID。
CoCreateGuid()函数和GUIDGEN.EXE程序。
QueryInterface(),CoCreateInstance()时所要的CLSID之类,应由开发商给定。但一般现在的COM库都包含类型库信息(TYPELIB)
使用LoadTypeLib函数就可以获得ITypeLib 接口,利用其接口的ITypeLib::GetLibAttr函数可获得CLSID。
iwin
2000-07-14
打赏
举报
回复
再次谢谢softdoctor为我的讲解,但是具体怎样做,我还是不太明白。
1、如果我已经生成一个ATL OBJECT,它只有一个接口(INTERFACE),我现在想手工添加一个接口,该怎样做?如何确定一个UUID?
2、如果我要在VC++里生成一个EXCEL表格实例,应该怎样做?我希望CLSID是在程序中自动搜索出来的,我只需象在VB中的CREATEOBJECT()函数那样只给出一个类名(如:EXCEL.APPLICATION)。能否给出源码?
3、我能否写出一个具有动态的UUID的COM组件?
以上问题恳请SOFTDOCTOR和其他高手再次不吝赐教,谢谢!!!
2021年软考网络工程师精华套餐(基础精讲+真题讲解+专题突破))
课程目标: 帮助学员顺利通过软考网络工程师考试。 课程简介: 分章节分模块讲解重点技术,难点和考点,让学员学习知识的同时,快速学习考试技巧。... 2020年学员战绩,
高分
不断,最
高分
接近满分通过:
基础
高分
请教
如何限制程序运行的方法?求助:通过编程DirectX抓屏------>masterz:再麻烦你一下,谢谢熟悉RichEdit的朋友过来看一下,RichEdit的几个
问题
.如何对 I/O 端口进行操作?有了该
问题
就有了思考(100分 献礼!)...
我在CSDN参与的3000个帖子
今日偶然翻到,感慨万千 1:申述:版主,是否扣了我的专家分? 2:100分急求,随机输出十个小写字母,但是,要求这十个字母不相同 3:求Sn=a+aa+aaa+…+aaa…a(n个a)之值 4:数组题 望高手帮忙!... 6:VBA
请教
怎
HTML(3):IE浏览器编程 - vcmute的专栏 - CSDNBlog
取ie浏览器文字乱码
问题
,
高分
相赠!!! T我所写的一个程序中有这样一个功能:用户选取了ie浏览器中的一段文字copy到剪贴板,我的程序从剪贴板中取出文字并显示在edit框中,这在中文系统下没有任何
问题
,而当程序运行在...
.Net HTML 硬件
在VC.net中如何动态创建
ActiveX
控件
请教
斑竹及各位专家:关于DLL中类的动态链接,重要!在NT Service中调用WMI启动一个nodepad,为什么没有界面?关于CFileDialog的多选文件
问题
关于socket的
问题
?100+100=200如何将...
ATL
3,245
社区成员
48,539
社区内容
发帖
与我相关
我的任务
ATL
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
复制链接
扫一扫
分享
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章