有关COM的问题:得到一个COM组件的DLL文件,如何编写程序取得文件中接口的有关信息:比如接口的ID,接口的方法、属性等。
解决方案 »
- 注入dll显示窗体问题
- 我的delphi2007和2010问题
- 求一个sql语句!!着急!!在线等!!
- stringgrid单元格与文本框同步显示问题
- 想把StringGrid控件中某一个格画上两种颜色,上面1/4为绿色,下面的为红色,请问代码该怎么写?
- ★★★天下所有的父母,祝你们身体健康 ★★★一篇贴子后的心理感受
- delphi与ORACLE
- 在下是用VC的,现在想学学DEPHI,兄弟们给些建议,推荐些书吧
- 我在别人程序中看到一个函数,是系统定义的,我用什么办法能知道这个函数是在哪个单元文件中定义
- ADO访问数据库时,如何导出数据库记录到一个新的数据库类型文件中如Excel,Access
- 在delphi中用什么样的函数可以将十六进制数转换成十进制?
- 问一个挺容易的问题,在线等待。
如果这个COM注册了
你能直接在列表中就能找到这个COM生成的组件
如果没有呢就create unit
然后选择这个DLL文件(最好是选择相应的TLB文件)
如果它在制作时包括了相应的接口信息
就可以生成一个***_TLB.pas文件
这个文件可以直接use使用
有相应的接口类和接口(有些是以co***开头的)
你直接可以create 使用
然后再选择dll文件或TLB文件就行了
最后用creatunit(COM组件有可能是非可视的) 或者install(如果是可视控件)
这样
在COM中如果实现了IPropertyinfo接口就可以通过
这个接口来得到COM中接口和属性的信息
这个比较难
而且相关资料少
我无法帮到你了
我正在看COM本质论,帮你找找先。
每个接口都会对应一个IUnknow接口,那么GUID肯定是可以通过IUnknow接口查询得到的了。
其实编译后的COM是包含了IDL定义的
例如你TDUMP *.dll
你将会看到IDL的描述
但具体IDL格式的规范我还不清楚。
IDispatch,假如在delphi中创建的com应该都有这个接口。
通过这个接口可以得到你需要的信息。
是使用ILibType和相关的一些东西来得到
相应的信息
可以做到的
IUnknown Methods Description
QueryInterface Returns pointers to supported interfaces.
AddRef Increments reference count.
Release Decrements reference count. IPropertyBag Methods Description
Read Called by the control to read a property from the storage provided by the container.
Write Called by the control to write each property in turn to the storage provided by the container. 以上是msdn的一段描述,看来IPropertyBag 是直接继承IUnknown 的,并保存了部分信息,好像还能得到错误信息等等。
看来大部分的编译器都对此进行了封装。
一般来讲,接口不一致的话只能通过偏移量来得到接口地址了,反正最前端的肯定是IUnknown了