【OLE】オートメーション総合スレ【ActiveX】

このエントリーをはてなブックマークに追加
106ひみつの検疫さん
汚染を除去しました。
107デフォルトの名無しさん:2006/06/04(日) 12:34:26
どうやら<OBJECT>タグは、CoCreateInstance(CLSCTX_ALL)をやっているらしい。レジストリ中でInprocHandler32の方がLocalServerより先に現れるからInprocHandler32があると動かないみたい。
new ActiveXObject()はCLSCTX_SERVERだから問題は起きない。まあオレのIE6.0+Excel2000以外では違うかもしれないけど。

で、46の環境でもオレと似たようなものだとしたら、46はタグは使っていないで、new ActiveXObject("Excel.Application")とかしているのではないか、と思われ。

それで、上のように無理矢理レジストリを書き換えるなどして<OBJECT>タグを使ったとしても、Excel.Applicationには実はある2つの問題があって結局イベント接続はできない。
詳しくは省略するが、簡単に言うとVBAだけを対象に作られていてアクティブスクリプトには対応していないのだ。

で、スクリプトだけでイベント接続できないのか、という事だが、これも無理なんではないかと思われ。
WSHの場合、わざわざWScript.ConnectObject()/WScript.CreateObject(,,)/WScript.GetObject(,,)というのをスクリプトホストが提供しているくらいなので、JScript.dllやVBScript.dllなどのスクリプトエンジンにはイベント接続の機能が無い。
なのでIEの場合は、IEからそのようなオブジェクトを提供してもらわなければならないわけだが、そういうものは見当たらないように思う。
108デフォルトの名無しさん:2006/06/04(日) 12:35:40
>>94 >>95 >>96
「シンクしてファイアー」って何? ATLよく知らないんだけど・・・
多分、イベントを代理で受け取って、同じ名前のイベントを発行する、って意味だと思うんだけど、合言葉っぽくなってるのはなぜ?
有名なセリフなの?