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: http://dara-j.asablo.jp/blog/2007/06/03/1552832/tb
※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。
コメントをどうぞ
※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。
※なお、送られたコメントはブログの管理者が確認するまで公開されません。