COMWinLibってなんやねん2007年06月03日 17時52分17秒

経緯

Google Gearsをインストールしたら、IE向けにはDLLが1個入るだけみたいだった。これ多分COMだろうな、と思ってVBAでオブジェクトブラウザを立ち上げてみたら、やっぱり「GearsTypelib」とやらができているので、COMでなんかできるっぽい。

で、ライブラリ探してるときに「Earth 1.0.Type Library」とかいろいろと興味深いものがちらほらと見つかったのだが、そのなかの1つに「COMWin 1.0.Type Library」てのがあった。

ライブラリの場所を見たところ、Microsoft Script Debuggerについてきてるやつみたいだ。(昔インストールしていた)

見てみよう

さっそくオブジェクトブラウザで開いてみると、「COMWindow」ってオブジェクトがあり、これが「CreateWindowEx」だの、「FindWindowEx」だの、ActiveXにあるまじき名前のメソッドが実装されてるっぽい。なんじゃこりゃーー。

newしてみる

ともかく、

var cw = new ActiveXObject("COMWinLib.COMWindow");
としてみると、「オートメーション サーバーはオブジェクトを作成できません」。 はて、したらこれでどうだ。
var cw = new ActiveXObject("COMWindow");
おお、エラーでないよ。これでいいんか。

ほんじゃまず引数取らないやつから試すか。

var w = cw.GetDesktopWindow();
「オブジェクトでサポートされていないプロパティまたはメソッドです」だそうだ。はて?

VBS経由して型を調べてみたら、COMWindowではなくIWindowDispになっていた。ほんじゃそっちのメソッドを試してみよう。

cw.IsWindow(); // → false
cw.IsWindowEnabled(); // → false
cw.IsWindowVisible(); // → false
ぜんぜんだめじゃん。お、「GetParent()」なんてのがある。
var p = cw.GetParent(); // → pもIWindowDisp

p.IsWindow(); // → false
p.IsWindowEnabled(); // → false
p.IsWindowVisible(); // → false
なんじゃそれ。

情報がほしい...

まぁ、メソッドの定義とか見てると、引数の中に

uType AS <サポートされていないバリアント型>
とかorzな記述があったりで、WSHからシンプルに使えるライブラリじゃなさそうなんだけど、「COMWinLib」とか「comwin.dll」とか見てもほとんど情報が見つからないのでものすごく気になってる。

追記:「サポートされないバリアント型」はIWindowDisp#MessageBoxにあったんだが、VC#2005でtlbimpしてみたらuintとかでマーシャリングされてたのでふつーにNumber渡して問題なかった。

だれかなんか情報しらないかなー

コメント

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※なお、送られたコメントはブログの管理者が確認するまで公開されません。

名前:
メールアドレス:
URL:
コメント:

トラックバック

このエントリのトラックバックURL: http://dara-j.asablo.jp/blog/2007/06/03/1552832/tb

※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。