I icool Unregistered / Unconfirmed GUEST, unregistred user! 2001-11-28 #1 怎样判断一个OCX组件是否已经注册,如已注册怎样得到该文件的所在目录?
V VoodooBoy Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-01 #2 呵呵,笨一点呢,自己搜索注册表查找它的注册信息是否存在啊! 当然如果查到了,上面就有该文件的目录了!
D Delphi4 Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-02 #4 这个问题很难办 首先要搞清楚OCX组件的注册原理 大家都知道用regsvr32.exe可以进行组件注册 但了解一下regsvr32的运行原理就可以知道 OCX其实也是一个动态链接库(其实COM组件就是DLL) regsvr32做的只是加载这个文件 然后调用其中的DllRegisterServer函数 所有的注册操作其实是在组件自身的DllRegisterServer函数中进行的 也就是说,其实并不知道DllRegisterServer到底做了什么操作 如果想判断一个组件是否已经注册 如果知道这个组件中的某个对象的ClassID或者ProgID 那直接在注册表的 HKEY_CLASSES_ROOT/CLSID键中查找ClassID 或在 HKEY_CLASSES_ROOT键中查找ProgID 就可以了 如果找到就表明已经注册了 当然要注意版本问题 也就是说,如果做了二进制兼容 可能是新旧版本用的是同一个ClassID 行了,就这些了。
这个问题很难办 首先要搞清楚OCX组件的注册原理 大家都知道用regsvr32.exe可以进行组件注册 但了解一下regsvr32的运行原理就可以知道 OCX其实也是一个动态链接库(其实COM组件就是DLL) regsvr32做的只是加载这个文件 然后调用其中的DllRegisterServer函数 所有的注册操作其实是在组件自身的DllRegisterServer函数中进行的 也就是说,其实并不知道DllRegisterServer到底做了什么操作 如果想判断一个组件是否已经注册 如果知道这个组件中的某个对象的ClassID或者ProgID 那直接在注册表的 HKEY_CLASSES_ROOT/CLSID键中查找ClassID 或在 HKEY_CLASSES_ROOT键中查找ProgID 就可以了 如果找到就表明已经注册了 当然要注意版本问题 也就是说,如果做了二进制兼容 可能是新旧版本用的是同一个ClassID 行了,就这些了。
I icool Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-03 #5 首先谢谢Delphi4的详细回答,其次本人还想顺便问一下怎样才能得到未注册ocx中注册用的 CLSID值.
D Delphi4 Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-03 #6 找到这个CLSID也比较麻烦 可以先把这个组件注册了 然后在注册表HKEY_CLASSES_ROOT/CLSID键中查找 HKEY_CLASSES_ROOT/CLSID/{********-****-****-****-************}/InprocServer32 默认值是这个组件文件路径的CLSID就是你要找的 可能有多个的呀 看它里面封装了多少个对象了。
找到这个CLSID也比较麻烦 可以先把这个组件注册了 然后在注册表HKEY_CLASSES_ROOT/CLSID键中查找 HKEY_CLASSES_ROOT/CLSID/{********-****-****-****-************}/InprocServer32 默认值是这个组件文件路径的CLSID就是你要找的 可能有多个的呀 看它里面封装了多少个对象了。
I icool Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-03 #7 请问各位高手还有其它更好的方法吗,如果没有一小时后分配积分.
M microyzy Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-03 #8 调用此组件,成功当然就是注册了(是不是太笨了)。
I icool Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-03 #9 To:microyzy 对于一个已注册的组件,如果再注册同样会成功;但这样在程序退出注消该组件时会影响其它使用该组件的程序.
A Atomic Unregistered / Unconfirmed GUEST, unregistred user! 2002-01-01 #10 Delphi里可以用错误陷阱捕获该错误吗?(我的意思是说调用此控件,如果没注册会出错 捕获此错误!) 不知道行不行,试试看!
刘 刘李子 Unregistered / Unconfirmed GUEST, unregistred user! 2002-01-01 #12 Delphi里可以用错误陷阱捕获该错误吗?(我的意思是说调用此控件,如果没注册会出错 捕获此错误!) 从另一个方面考虑问题,为什么不可以呢?