2003-11-30

[2003-11-23] の「Microsoft Bookshelf Version 3.0 でWZから単語検索」の続き。

見えてきたCOM(遅)

あのような、TX-CでWSHのスクリプトコードをせこせこ生成してそれを実行するという方式が最近では結構増えてきましたが、これはこれで「なんだかなぁ」という気になるのも確か。できればTX-Cのみの力によって実現できたほうが、達成感はあります(換言すれば、純粋に気持ちの問題)。

TX-Cから直接COMオブジェクトをいじれないかと、MSDNの記事等を調べて挑戦してみたところ、なんとか動くところまで持っていけました。

Microsoft Bookshelf Version 3.0 でWZから単語検索 COM 自力解決版
http://www.emptypage.jp/download/bsdef.zip

アーカイブに今回行った手順のメモを同梱しておきました。たぶんネタ的には上級者向けのトピックだと思われるので、意味不明でもご安心ください。あなたは正常です。

とはいえ、前回も書いたとおり、Bookshelfは、アプリを問わずにホットキーで範囲選択中の単語を検索できるので、これは言ってみれば、わざわざもっとも険しい道を通ってゴールにたどり着くようなもの。本命はCOMを介さないとできないと思われる処理、例えば……。

Visual Studio .NET ドキュメントでWZから単語検索

Visual Studio .NETのヘルプ、「Visual Studio .NET 連結ヘルプ コレクション」は、Microsoft Document Explorer (dexplore.exe)というアプリケーションを介した新しい形式のものになっています。これまでのWinHelpやHTML Help形式ではWin32 APIを使えば呼び出せたのですが、dexplore.exeにはそれらしきAPIはない模様。すでにCOMインタフェースが用意されていることは知っていたのですが(cf. DExplore COM Interface)、こいつはBookshelfの場合と違って、呼び出し元のインスタンスが終了すると自動的にウィンドウも破棄されてしまうので、WSHのスクリプトを書いてそれを走らせるという方法が使えなかったのです(単語を検索させることはできるが、スクリプトが最後まで実行された瞬間にwscript.exeとともに消えてしまう)。

それが、今回COMの使い方が見えてきたことでついに実現可能に! って、あんまりひっぱるのもアレなので、能書きはこのへんで。

Visual Studio .NET ドキュメントでWZから単語検索
http://www.emptypage.jp/download/vshelp.zip

vshelp.mainを実行すると、カーソル位置の単語を取得して、Visual Studio .NETのヘルプでキーワード検索を行います。よろしければご利用くださいませ。

追記

すごいすごい!(←大はしゃぎ)