function SameDispatch(one, two: IDispatch): Boolean;
var
  oi: IObjectIdentity;
begin
  Result := (one as IUnKnown) = (two as IUnknown);
  if not Result then
  begin
    oi := one as IUnKnown as IObjectIdentity;
    Result := oi.IsEqualObject(two as IUnKnown) = S_OK;
  end;
end;使用以上例程在一些情况下并不凑效,想知道这个问题的最终答案是?