COM のクラスを定義している DLL の探し方

COM のクラスを定義している DLL の探し方は
[VB] ActiveX コンポーネントで作成されるレジストリ エントリ
http://support.microsoft.com/kb/183771/ja
に書いてある。


1. レジストリエディタで HKEY_CLASSES_ROOT の直下から Shell.Application を検索。
2. そのキーの CLSID の値をコピーして、レジストリ全体から検索。
3. その CLSID をキー名としたノードがあるので、その下の InProcServer32 ノードを見る。
すると %SystemRoot%\system32\SHELL32.dll とわかる。


Rubyist Magazine - Win32OLE 活用法 【第 1 回】 Win32OLE ことはじめ
http://jp.rubyist.net/magazine/?0003-Win32OLE
にある通り、クラスの中を見るには Excel などに付属のオブジェクトブラウザか、Python Win32 Extention に付属のオブジェクトブラウザを使うと良い。
Windows リソースキットツールの oleview も素晴らしい。
http://www.microsoft.com/downloads/details.aspx?FamilyID=9d467a69-57ff-4ae7-96ee-b18c4790cffd&DisplayLang=en&displaylang=en

Visual Basic Editor のオブジェクトブラウザで「ツール」→「参照設定」で shell32.dll を参照追加する。
するとこの DLL に入っているクラスが見られるようになる。


それを見て CascadeWindows というメソッドがあることがわかったので、次のような VBScript を書いて実験してみる。

Set o = CreateObject("Shell.Application")
o.CascadeWindows
Set o = Nothing 

今開かれているウィンドウが全部重ねて表示された。成功。