如何为自动化事件生成接口(而不是调度接口)

时间:2016-04-23 12:30:55

标签: delphi

我正在尝试使用事件创建自动化服务器。此服务器将匹配已开发的客户端。这是处理客户端的* _TLB.Pas文件的一部分的事件。

 ILocationMapServiceEvents = interface(IDispatch)
    ['{F03C34F5-CDD3-4558-8895-1A81C535CD8F}']
    procedure OnFormClosed; safecall;
    procedure OnMapCaptured(const mapState: WideString; mapImage: PSafeArray); safecall;
  end;

ILocationMapServiceEventsDisp = dispinterface
    ['{F03C34F5-CDD3-4558-8895-1A81C535CD8F}']
    procedure OnFormClosed; dispid 1;
    procedure OnMapCaptured(const mapState: WideString; 
                            mapImage: {NOT_OLEAUTO(PSafeArray)}OleVariant); dispid 2;
  end;

但是当我尝试生成事件支持的代码时(通过单击“在Delphi自动化对象中生成事件支持代码”对话框),它只生成dispinterface

ILocationMapServiceEventsDisp = dispinterface
    ['{F03C34F5-CDD3-4558-8895-1A81C535CD8F}']
    procedure onFormClosed; dispid 1;
    procedure onMapCaptured(const mapState: WideString;
                            mapImage: {NOT_OLEAUTO(PSafeArray)}OleVariant); dispid 2;
  end;

如何让Delphi(Mine XE5)生成带有接口和dispinterface的事件支持代码。

我真正的问题是我可以通过dispinterface发送PSafeArray。

更新:

此链接显示具有完全相同问题的其他人。但答案也不起作用。

https://www.experts-exchange.com/questions/21466789/COM-events-with-out-using-dispinterface.html

0 个答案:

没有答案