《com 原理与应用》第四章的进程外组件例子程序
为什么我总是必须事先手动运行组件程序 Dictionary.exe 之后,再运行DictCtrl.exe 才能正确显示结果,否则只会显示 Create object failed! 我可也是事先注册了DictPrxy.dll 的呀:(
为什么我总是必须事先手动运行组件程序 Dictionary.exe 之后,再运行DictCtrl.exe 才能正确显示结果,否则只会显示 Create object failed! 我可也是事先注册了DictPrxy.dll 的呀:(
而且前面几章的程序运行的都很好,好奇怪:(
希望多多指教:)
我这大半年来看了《C++ Primer》和《C++ 标准程序库》,自问看书的时候还是蛮用心的,书上的程序我都调试过了,其他的《Effective C++》系列和《Exceptional C++》系列在这期间也穿插着看,可是最近看潘爱民的《Com 原理与应用》前三章还好,从第四章开始“聚合”之后就感觉好吃力,特别是太多宏定义,是不是我还些基础的书本没有看啊?
你好,请问服务端的exe组件应该怎么注册?也是用 regsvr32 吗?好像 regsvr32 只能注册 dll 或者 ocx
你好,请问服务端的exe组件应该怎么注册?是自动注册,还是手动注册阿?
当注册服务器exe时,使用命令行/register,注销则是/unregister注册组件服务器,需要向注册表加入如下键值:
假设组件Aggregeate221中有一个类为CA,它的当前版本为1,那么组件的ProgID,也就是组件的友好名称为:
Aggregate221.CA(版本无关的ProgID),Aggregate221.CA.1(版本相关的ProgID)
HKEY_CLASSES_ROOT\CLSID\{363963DD-2458-4bb7-BE51-7084A55B369D}
HKEY_CLASSES_ROOT\CLSID\{363963DD-2458-4bb7-BE51-7084A55B369D}下建立默认键值Aggregate221.CA
HKEY_CLASSES_ROOT\CLSID\{363963DD-2458-4bb7-BE51-7084A55B369D}\LocalServer32
HKEY_CLASSES_ROOT\CLSID\{363963DD-2458-4bb7-BE51-7084A55B369D}\LocalServer32下建立默认键值,设置服务器exe路径
HKEY_CLASSES_ROOT\CLSID\{363963DD-2458-4bb7-BE51-7084A55B369D}\ProgID
HKEY_CLASSES_ROOT\CLSID\{363963DD-2458-4bb7-BE51-7084A55B369D}\ProgID建立默认键值,ProgID名称
HKEY_CLASSES_ROOT\CLSID\{363963DD-2458-4bb7-BE51-7084A55B369D}\ersionIndependentProgID建立默认键值,版本无关的ProgIDHKEY_CLASSES_ROOT\Aggregate221.CA.1
HKEY_CLASSES_ROOT\Aggregate221.CA.1建立默认键值,Aggregate221.CA.1 class
HKEY_CLASSES_ROOT\Aggregate221.CA.1\CLSID
HKEY_CLASSES_ROOT\Aggregate221.CA.1\CLSID建立默认键值,Aggregate221.CA
HKEY_CLASSES_ROOT\Aggregate221.CA
HKEY_CLASSES_ROOT\Aggregate221.CA建立默认键值,Aggregate221.CA Class
HKEY_CLASSES_ROOT\Aggregate221.CA\CLSID
HKEY_CLASSES_ROOT\Aggregate221.CA.1\CLSID建立默认键值,Aggregate221.CA
HKEY_CLASSES_ROOT\Aggregate221.CA\CLSID\CurVer
HKEY_CLASSES_ROOT\Aggregate221.CA\CLSID\CurVer建立默认键值,Aggregate221.CA.1
注销时,则需要清除这些键值与键名当组件启动时,使用CoRegisterClassObject来注册类对象,使用CoRevokeClassObject来注销类对象
查询接口还是使用CreateInstance,只不过传入CLSCTX_LOCAL_SERVER而已
HKEY_CLASSES_ROOT\CLSID\{363963DD-2458-4bb7-BE51-7084A55B369D}\ersionIndependentProgID建立默认键值,版本无关的ProgID
HKEY_CLASSES_ROOT\CLSID\{363963DD-2458-4bb7-BE51-7084A55B369D}\VersionIndependentProgID建立默认键值,版本无关的ProgID
HKEY_CLASSES_ROOT\CLSID\{363963DD-2458-4bb7-BE51-7084A55B369D}\VersionIndependentProgID建立默认键值,版本无关的ProgID