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

このエントリーをはてなブックマークに追加
120デフォルトの名無しさん
>>55
スクリプトだけで何とかするコンポーネントを作ってみた。

SCON001.LZH:IEやHTAなどでWScript.ConnetObject()と同じ機能を実現
ttp://winscript.s41.xrea.com/upload/source/No_0006.lzh

みんながExcelを持っているとは限らないし、IE関連オブジェクトを使ってみた。
サンプルでは例えばIE提供のdocumentオブジェクトにスクリプトだけで接続している。と言っても、関数オブジェクトをプロパティに代入するのとは違うよ。
他に適当なオブジェクトが思いつかなかったので、他のサンプルではIEからIEを呼び出す、というヘンな事になったりしてるけど。
まあIEからだけじゃなくて、HTAでも実行してみて頂。その方がセキュリティ設定が面倒でないし。
あと意味ないけどWSHからも使用できる。多分どんなスクリプトホストからでも使用可能なんじゃないかと思うけど。

ちなみにIE相手にこれを使うにはコンポがもう一つ必要。IEがクラス情報をサポートしてないのでこれを修正する。documentは必要なし。

WWCI002.LZH:WScript.ConnectObjectできないオブジェクトをConnectObject可能に
ttp://winscript.s41.xrea.com/upload/source/No_0004.lzh

で、問題のExcelなんだけどこれにはさらにもう一つコンポが必要なんだよね・・・今準備中。

そうそう、セキュリティ設定に「マイコンピュータゾーン」を出現させるのは以下。まあHTA使えばいいんだけど。「ダイアログ表示」ならまだしも「有効」だとアブナイし。

>HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\0
>および、
>HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\0
>キーの、"Flags"というDWORD値を"1"にします。

なお、みんな、チラ裏っぽいけどゴメンしてね。

>>118
IDispatch::Invokeの仕様からすると、VT_EMPTYとdispparams.cArgs = 0とは違うように思うんだけど?? VT_ERRORはその後に何か来る場合だけだし・・・