实现支持VBS的For Each语法的COM组件

VBS支持通过For Each遍历集合对象,但是如何用Delphi实现这样一个COM对象呢?
其实很简单

第一步:实现IEnumVARIANT接口,其声明如下

IEnumVARIANT = interface (IUnknown)
['{00020404-0000-0000-C000-000000000046}']
   function Next (celt; var rgvar; pceltFetched): HResult;
   function Skip (celt): HResult;
   function Reset: HResult;
   function Clone(out Enum): HResult;
end;

第二步:给我们的COM对象添加一个属性,名称为_NewEnum,类型IUnknown,DispID=-4
实际返回的内容就是实现了IEnumVARIANT接口的对象

That All!

posted @ 2007-04-26 17:33  Sephil  阅读(709)  评论(0编辑  收藏  举报