Ruby win32ole - 如何判断OLE类类型,OLE类是否支持某个方法

发布于 2024-07-14 05:36:21 字数 424 浏览 7 评论 0原文

我正在使用 Ruby 1.8。 使用 WIN32OLE 模块 -

1) 如何确定 OLE 对象实例的类名? 2)如何判断对象实例是否支持特定方法?

在 Outlook 自动化脚本中,我尝试删除“已删除项目”文件夹中超过 21 天的项目。 对于邮件项目,我想使用 ReceivedTime 属性,但为了做到这一点,我需要检查该项目是否实际上是 MailItem 实例。

对于第二个,我能想到的最好的是(非常慢):

def MethodExists(obj, methodName)
  obj.ole_methods.each{|method|
    if (method.name == methodName)
      return true
    end
  }
  return false
end

I am using Ruby 1.8. Using the WIN32OLE module -

1) How do I determine the class name of an OLE object instance?
2) How can I tell whether an object instance supports a particular method?

In an Outlook automation script, I am trying to delete the items in the 'Deleted Items' folder which are older than 21 days. For mail items, I want to use the ReceivedTime property, but in order to do that, I need to check whether the item is actually a MailItem instance.

For the second, the best I have been able to come up with is (really slow):

def MethodExists(obj, methodName)
  obj.ole_methods.each{|method|
    if (method.name == methodName)
      return true
    end
  }
  return false
end

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

咋地 2024-07-21 05:36:21

具体到 WIN32OLE 对象...

如何确定 OLE 对象实例的类名?

object.ole_obj_help.name

如何判断对象实例是否支持特定方法?

object.ole_methods.collect!{ |x| x.to_s }.include?( 'MethodName' )

With specific regard to WIN32OLE objects...

How do I determine the class name of an OLE object instance?

object.ole_obj_help.name

How can I tell whether an object instance supports a particular method?

object.ole_methods.collect!{ |x| x.to_s }.include?( 'MethodName' )
书间行客 2024-07-21 05:36:21
  1. obj.class

  2. :

    if obj.respond_to?(methodName) 
          #做你的工作 
      结尾 
      
  1. obj.class

  2. :

    if obj.respond_to?(methodName)
        #do your work
    end
    
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文