初级问题:请问接口是怎么注册的?TypeLib又是怎么注册的?

milesma 2007-03-08 03:33:38
我知道组件注册到HKEY_CLASSES_ROOT\CLSID下,是通过DllRegisterServer注册的。(这种说法正确?此为第 1 个问题)

接口在注册表的:HKEY_CLASSES_ROOT\Interface下面。请问(第2个问题),注册代码写在什么地方?或者说,源代码里那里的设置能影响到注册?如果是自动注册的,也应该给我一个自动的流程。

HKEY_CLASSES_ROOT\TypeLib下有类型库的注册,请问(第三个问题),这个注册代码在哪里?同第2个问题。
...全文
658 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
milesma 2007-03-19
  • 打赏
  • 举报
回复
to All,
Thank you for your reply. Share the answer with all of you.

诚然,所有注册信息都是在DllRegisterServer里写的。
写注册表有两种方式,一种是通过.rgs文件,一种则是通过Windows API函数。前者我就不多说了。至于后者,则有如下规则:
for CLSID:DECLARE_REGISTRY_RESOURCE + UpdateRegistryFromResource + RegisterServer + 指定.rgs文件

for Interface&TypeLib: 可以用LoadTypelibEx/AfxOleRegisterTypeLib.请参考Inside Distributed COM:Type Libraries and Language Integration (在MSDN里搜索可得)
podded 2007-03-15
  • 打赏
  • 举报
回复
idl文件是用来定义接口的,注册信息在.rgs文件中的,自动生成,注册时由输出的接口DllRegisterServer调用该文件完成注册,基本不需要开发者介入。
milesma 2007-03-14
  • 打赏
  • 举报
回复
顶一下。高手都不屑于回答?
接口注册 是不是 在typelib注册的时候完成的?
接口注册 与 idl 文件有什么关系?
ks_gq 2007-03-14
  • 打赏
  • 举报
回复
说的简单一些, 就是向注册表里面写了一系列相关信息.你的工程里一定有DllRegisterServer这个导出函数吧, 就是它完成向注册表里写信息的.
milesma 2007-03-09
  • 打赏
  • 举报
回复
我的工程下,怎么没有.rgs文件?
有的工程下有,但是也没看到往Interface键值下写啊,请给出一个完整的文件让我瞧瞧。
huzs_82 2007-03-08
  • 打赏
  • 举报
回复
rgs文件是在你的程序工程目录下面,是以"工程名+.rgs"为命名的文件.
是自动生成的,里面是一些注册DLL时需要修改的注册表部分的记录.
milesma 2007-03-08
  • 打赏
  • 举报
回复
请问,这个rgs文件在哪里?我的COM工程里怎么没有?
rgs是自动生成的?由谁生成?请详解
不胜感激
wanilyer 2007-03-08
  • 打赏
  • 举报
回复
1 是的
2、3 在一个扩展名是 rgs的文件中

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧