Tietew です。
On Fri, 27 Dec 2002 10:55:03 +0900
In article <006b01c2ad4a$f9c83d30$c...@bbbrain.jp>
[[vcpp 00060082] Re: ATLコンポーネントとJavaScriptの引数経由のデータ受けた?]
"hashi" <h...@bb-brain.co.jp> wrote:
> 結局、JavaSpからCOMの引数を経由しての
> 引き渡しは難解のようです。
難解なのではなく,不可能です。
JScript のリファレンスを見てください。
http://msdn.microsoft.com/library/?url=/library/en-us/script56/html/js56jsoriJScript.asp
> 1.■JavaSp内でArray()を使うと参照渡しが可能なことが
> わかりました。
:
> 2.■これを踏まえて、COMを呼び出してみたのですが、
> VARIANTタイプが「VT_DISPATCH」 となってしまい、
> 設定方法も解らず残念しました。
IDispatch インタフェイスを利用して,プロパティ "0" にセットすれ
ばよいです。
具体的には:
VARIANT disp; // 引数 (VT_DISPATCH)
VARIANT vt; // セットしたい値が入った VARIANT
DISPID id;
disp->GetIDsOfNames(IID_NULL, L"0", 1, DEF_LANGID, &id);
DISPPARAMS dp;
UINT arg_errs;
VARIANT retval;
dp.cArgs = 1;
dp.cNamedArgs = 0;
dp.rgvarg = &vt;
dp.rgdispidNamedArgs = NULL;
VariantInit(&retval);
disp->Invoke(id, IID_NULL,
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
DISPATCH_PROPERTYSET, &dp, &retval, NULL, &arg_errs);
なお,戻り値の HRESULT のチェックとか,VARIANT の生成・破棄は正
しく行わないとメモリリークしたりアクセス違反が起こりますので注意。
―[ Tietew ]――――――――――――――――――――――――――――
Mail: t...@tietew.net / t...@raug.net
Web : http://www.tietew.net/ Tietew Windows Lab.
PGP fingerprint: 26CB 71BB B595 09C4 0153 81C4 773C 963A D51B 8CAA
On Fri, 27 Dec 2002 10:55:03 +0900
In article <006b01c2ad4a$f9c83d30$c...@bbbrain.jp>
[[vcpp 00060082] Re: ATLコンポーネントとJavaScriptの引数経由のデータ受けた?]
"hashi" <h...@bb-brain.co.jp> wrote:
> 結局、JavaSpからCOMの引数を経由しての
> 引き渡しは難解のようです。
難解なのではなく,不可能です。
JScript のリファレンスを見てください。
http://msdn.microsoft.com/library/?url=/library/en-us/script56/html/js56jsoriJScript.asp
> 1.■JavaSp内でArray()を使うと参照渡しが可能なことが
> わかりました。
:
> 2.■これを踏まえて、COMを呼び出してみたのですが、
> VARIANTタイプが「VT_DISPATCH」 となってしまい、
> 設定方法も解らず残念しました。
IDispatch インタフェイスを利用して,プロパティ "0" にセットすれ
ばよいです。
具体的には:
VARIANT disp; // 引数 (VT_DISPATCH)
VARIANT vt; // セットしたい値が入った VARIANT
DISPID id;
disp->GetIDsOfNames(IID_NULL, L"0", 1, DEF_LANGID, &id);
DISPPARAMS dp;
UINT arg_errs;
VARIANT retval;
dp.cArgs = 1;
dp.cNamedArgs = 0;
dp.rgvarg = &vt;
dp.rgdispidNamedArgs = NULL;
VariantInit(&retval);
disp->Invoke(id, IID_NULL,
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
DISPATCH_PROPERTYSET, &dp, &retval, NULL, &arg_errs);
なお,戻り値の HRESULT のチェックとか,VARIANT の生成・破棄は正
しく行わないとメモリリークしたりアクセス違反が起こりますので注意。
―[ Tietew ]――――――――――――――――――――――――――――
Mail: t...@tietew.net / t...@raug.net
Web : http://www.tietew.net/ Tietew Windows Lab.
PGP fingerprint: 26CB 71BB B595 09C4 0153 81C4 773C 963A D51B 8CAA