2009-02-27 64 views
4

我正在使用Ruby 1.8。使用WIN32OLE模块 -Ruby win32ole - 如何确定OLE类的类型,OLE类是否支持方法

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 

回答

7

具体关于WIN32OLE的对象ts ...

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

object.ole_obj_help.name 

如何判断一个对象实例是否支持特定的方法是什么?

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

工作,我觉得object.ole_methods.any? {| x | x.to_s ==“MethodName”}会更简洁一些。或#detect,这也会很好。 – 2009-03-01 14:45:59

-3
  1. obj.class

  2. if obj.respond_to?(methodName) 
        #do your work 
    end 
    
+1

1)WIN32OLE - 没有用 2)不ole_methods – 2009-02-27 20:03:28

相关问题