From: Shusaku Date: 2002-12-06T00:29:17+09:00 Subject: [ruby-list:36682] Re: WIN32OLE と IAgentCtlRequest Shusakuです。 > #define DISPID_VALUE ( 0 ) > この、DISPID(Invokeメソッドで使用するメソッドID)の値0は、OLEオートメー > ションで特別な意味を持っています。具体的にはデフォルトプロパティで、明示 > 的なメソッド名の省略時の呼び出しに使用されます(無理矢理こじつけると、 > method_missingというところかな)。 うわぁ!そういうことだったのか。なにしろ、OLEオートメーションを本格的に プログラミングした経験がなく、そのような基本的な知識が不足していました。 あらためて検索してみると、ちゃんと記述がありました。 http://msdn.microsoft.com/library/en-us/automat/htm/chap6_7x2c.asp DISPID_VALUE : The default member for the object. This property or method is invoked when an ActiveX client specifies the object name without a property or method. > class WIN32OLE > def ==(other) > if WIN32OLE === other > return _getproperty(0,[],[]) == other._getproperty(0,[],[]) > end > super(other) > end > end そうです、こういうことをやりたかったのです。 比較演算子の再定義でゴニョゴニョするのだろうとは考えていましたが、 具体的なコードに辿り着けず、質問した次第です。 ありがとうございました。 -- Shusaku