E COM研究笔记 / 挂接事件

本文探讨了在易语言中如何为COM挂接事件,指出易语言在COM支持上的局限性,以及如何通过IDispatch接口实现事件挂接。讲解了COM对象的结构、虚函数指针的概念,并解释了IDispatch::Invoke在COM互调用中的关键作用。最后,提到了在易语言中遇到的汇编内嵌问题和变体型的使用。
摘要由CSDN通过智能技术生成

为COM挂接一个回调接口,在如C++,C#中可以调用AtlAdvise或从

IConnectionPointContainer挂接(Sink必须具象继承接口的全部成员)

但易语言则不同,易语言在COM支持上一直存在缺陷,易语言是一个

强类型语言,而“Object / 对象”似乎很类似IDispatch*但似乎又不是

而易语言本身则未提供任何可以具备事件点对点的方法 需要挂接的话

着实令人头疼不已

// IDispatch* pdisp = NULL;
// if(SUCCEEDED(CoInitialize(NULL)) != FALSE)
// {
//  CoCreateInstance(__uuidof(CLSID_ScriptControl), NULL, CLSCTX_INPROC_SERVER, __uuidof(IDispatch), (void**)&pdisp);
// }

// UINT pctinfo;

// IDispatch* pdisp;

// pdisp->GetTypeInfoCount(&pctinfo);

//  mov         esi,esp 

//  lea         eax,dword ptr [pctinfo] 
//  push        eax
//  mov         ecx,dword ptr [pdisp] 
//  mov         edx,dword ptr [ecx] 
//  mov         eax,dword ptr [pdisp] 
//  push        eax 
//  mov         ecx,dword ptr [edx+0Ch] 
//  call        ecx 

上面是一个调用IDispatch::GetTyp

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值