关于CreateOleObject和CreateComObject的参数,请大家谈一谈!(100分)

  • 主题发起人 主题发起人 tt520
  • 开始时间 开始时间
T

tt520

Unregistered / Unconfirmed
GUEST, unregistred user!
function CreateOleObject(const ClassName: string): IDispatch;
function CreateComObject(const ClassID: TGUID): IUnknown;
这两个函数的参数ClassName和ClassID随相应程序变化,请高手谈一谈具体应该怎么写??[?][?]
 
这个要看你创建什么com对象了。比如,ClassName传递的是dll名+对象名,而ClassID则是唯一的64位标识符了!
 
to: zqw0117
我发现ClassName连接到SQL SERVER、Excel、Word时,各不相同,当我要连到CoreDraw、PhotoSHOP等各种不同的软件时,应该如何处理。
 
这个倒是值得关注。
 
其实你要实现对CoreDraw和PhotoShop的链接,就必须肯定,上述两个程序是采用Ole自动化对象的方式实现的,这样你才有可能链接上他们,否则,你打消这个念头吧。

你可以点击Component菜单,选择Import ActiveX菜单项,然后检查一下列表中有没有CoreDraw和PhotoShop注册的自动化对象的文件,只有先肯定有,你才能继续做别的事情。
 
嗨,这个问题拖了这么久,没有人知道吗??
当ClassName连接到不同的软件时,应该如何处理。
zqw0117,说了一些,感觉隔靴绕痒,谁能讲得具体上点吗,抑或是有什么资料介绍一下。
 
因为我现在没有装PhotoShop和CoreDraw两款软件,所以我无法帮你检查他们的Ole自动化对象的CLSID,你如果留心注册表的话,会发现在HKEY_CLASS_ROOT下面有一个CLSID的键值,打开它,下面全部都是{xxxx-xxxxxxxx-xxxxx}这样的字符串,这个就是所有在系统中注册的CLSID,如果你要引用某个应用程序当作自动化对象操作的话,就必须找到对应的CLSID,然后调用CreateOleObject或CreateComObject两个函数来获取接口,你明白吗?如果ClassName连接不到相关的软件(比如你说的PhotoShop的话)那么肯定可以确定你用的CLSID不是该程序的接口或者该程序根本没有公开接口让你调用。所以如果这样,你放弃吧。
 
>> 其实你要实现对CoreDraw和PhotoShop的链接,就必须肯定,上述两个程序是采用Ole自动化对象的方式实现的,这样你才有可能链接上他们,否则,你打消这个念头吧。
同意 zqw0117。

你必须要找到CoreDraw和PhotoShop的Ole自动化对象,这是前提条件。如果没有的话,就不能往下做了。
 
多人接受答案了。
 
后退
顶部