高分讨论:知道ActiveX的名称,如何用代码知道它的OCX文件名?(299分)

W

wjp888

Unregistered / Unconfirmed
GUEST, unregistred user!
知道ActiveX的名称,如何用代码知道它的.OCX文件名?
 
我想出800分,为何论坛不让?
 
有什么好的想法,请大家畅谈:
 
OCX的注册信息在注册表里,察看注册表应该就可以得到OCX文件的名字和路径,不过要验证是不是有效就是了.
 
在注册表的什么地方,请说详细些,谢谢!
 
刚才试了,从注册表中搜索,太慢了,Com机制不可能是那样的,我们平时用OCX开发的软件,启动也没那么慢!

就是说我们软件用到的OCX是不是已经注册了?
如果注册了,那么它的文件在什么地方?
 
就是说我们软件用到的OCX是不是已经注册了?
如果注册了,那么它的OCX文件在什么地方?
 
肯定是存在注册表中
知道ActiveX名字查找对应DLL或OCX文件很简单,例如查找 KSDHTMLEDLib.KSEditX 对应的文件,首先打开
HKEY_CLASSES_ROOT/KSDHTMLEDLib.KSEditX/Clsid
读取默认值 {00C0D654-163D-476D-82EC-29741C6BD9EC}
然后根据这个值打开
HKEY_CLASSES_ROOT/CLSID/{00C0D654-163D-476D-82EC-29741C6BD9EC}/InprocServer32
读取默认值E:/DelphiProject/Bin/Sys/KsDHTMLEDLib.ocx
就是这个控件对应的OCX文件
 
没有存在注册表中,如你把:
读取默认值E:/DelphiProject/Bin/Sys/KsDHTMLEDLib.ocx
改成值: E:/DelphiProject/Bin/Sys/KsDHTMLEDLibXXX.ocx
这个KsDHTMLEDLib.ocx还是能用,除非删除文件KsDHTMLEDLib.ocx,才不能用!
 
我的
HKEY_CLASSES_ROOT/CLSID/{00C0D654-163D-476D-82EC-29741C6BD9EC}/InprocServer32
里的值是 E:/DelphiPr~1/KsDHTML~1.ocx
而不是 E:/DelphiProject/Bin/Sys/KsDHTMLEDLib.ocx

如何才能得到它的全名呀?
 
顶部