我就知道一个COM接口变量*p2,如何通过p2得到他的IID和GUID?

HotSoftg 2009-08-09 05:40:56
我就知道一个COM接口变量*p2,如何通过p2得到他的IID和GUID?

比如:
IDispatch *p2;

...全文
171 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2009-08-12
  • 打赏
  • 举报
回复
通过VirtualQuery可以得到一个给定地址所在的dll
「已注销」 2009-08-12
  • 打赏
  • 举报
回复
不同dll没有关系,看dll注册的套间是否一致,如果是apartment,就可以通过我说的方法找到clsid和iid
HotSoftg 2009-08-12
  • 打赏
  • 举报
回复
他们在不同的DLL中。
「已注销」 2009-08-12
  • 打赏
  • 举报
回复
可以通过查看dll的资源,来确定是否嵌入tlb
「已注销」 2009-08-12
  • 打赏
  • 举报
回复
支持IDispatch必然包括TypeLib
HotSoftg 2009-08-12
  • 打赏
  • 举报
回复
如果DLL 没有包括那个 .tlb 文件怎么办?
marrco2005 2009-08-11
  • 打赏
  • 举报
回复
http://www.codeguru.com/Cpp/COM-Tech/atl/atl/article.php/c57
HotSoftg 2009-08-11
  • 打赏
  • 举报
回复
在程序中得到接口IID,
marrco2005 2009-08-11
  • 打赏
  • 举报
回复
如果只有 IDispatch 接口, 那无法得到你想要的信息。
如果你知道 COM 组件的路径,可以用vc6 里自带的工具oleview查看

file-》view typelib -> 选择 COM 组件的路径 例如 c:\xxx.dll
就能看到组件的相关信息
HotSoftg 2009-08-11
  • 打赏
  • 举报
回复
现在是不知道那个源生的IID和GUID情况下,如何知道得到他的IID GUID。

「已注销」 2009-08-11
  • 打赏
  • 举报
回复
如果调用者与接口同处一个Apartment套间中, 通过接口vtable可以得到所在的dll,然后可以载入该dll所属的typelib,遍历创建支持IDispatch接口的对象, 比对vtable来确定IID和GUID
znkd 2009-08-10
  • 打赏
  • 举报
回复
那个接口设计人员应该知道,你只能通过他们得到这个了。
arong1234 2009-08-10
  • 打赏
  • 举报
回复
实际这是不可能的。COM的使用一直是先知道iid和接口定义然后才使用的,而不是反过来
一般情况下,你这个InData函数设计者需要给你一个说明,告诉你接收的IDispatch是什么接口
[Quote=引用 2 楼 hotsoftg 的回复:]
是的。

但是我只有一个COM接口变量。

比如:
void  InData(IDispatch *p2)
{
    我就知道一个COM接口变量*p2,如何通过p2得到他的IID和GUID?
    在这里.
}
[/Quote]
HotSoftg 2009-08-10
  • 打赏
  • 举报
回复
是的。

但是我只有一个COM接口变量。

比如:
void InData(IDispatch *p2)
{
我就知道一个COM接口变量*p2,如何通过p2得到他的IID和GUID?
在这里.
}
晒月光的青蛙 2009-08-09
  • 打赏
  • 举报
回复
IID和GUID应该是别人提供给你的吧

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧