E COM研究笔记 / 挂接事件

为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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值