From: "H.Yamamoto" Date: 2005-07-13T20:02:53+09:00 Subject: [ruby-list:40926] Re: windowsでコンテキストメニューの「印刷」を実行するには? 山本です。 >情報ありがとうございます。 >ざっと目を通してみました。 >どうも、参照渡しのやり方が悪いんじゃなくて、参照渡しでやっている限り >InvokeVerbには受けつけてもらえないってことになりそうですねえ。 そうみたいですね。なぜこの関数だけそうなのか、よくわかりませんが・・・ 試しに C++Builder5 で HRESULT _stdcall test([in, optional] VARIANT val ); というメソッドを持つコントロールを作って ruby から呼んでみましたが、 問題なく実行されました。 ># どうするか、考えがまとまらない...。 本来は、パラメータが [in] なら値渡し、[out] なら参照渡しするのが 正しいやり方なんだと思います。[in] か [out] か、ruby側(レイトバインディング)で 知る方法がないのが問題だと・・・・ となると、VBScript みたいにユーザに参照渡しと値渡しを区別させるとか (VBScript では括弧で囲むと値渡し、囲まないと参照渡しになるらしい) JScript のようにすべて値渡しするとか・・・でもこれだと動かないものが あったんですよね。動かないというのは、やっぱり [out] に値渡しだと エラーになるとか、値が得られないとか、そういうことでしょうか? # http://blogs.msdn.com/ericlippert/archive/2003/09/29/53117.aspx に、 # VBScript で [in,out] に渡すとメモリリークするとか、恐ろしいことが # 書いてありましたが・・・なんか、結構深そうな話ですね。