■SnapInって?...............2■
前のページで見たようにSnapInの特徴は、後からあたかもWinSpecに内蔵されているかのように、機能を追加できる点にあります。
では、これはどうやって実現しているのでしょうか?
Word, Excel, Accessと言ったMicrosoft社のアプリケーションをお使いの方で、VBAをご存知の方でしたら、「Windows Automationを用いています」と言えば理解できるでしょう。
WinSpec/WinViewでは、マイクロソフト社製のWORDやEXCELと同様、Windows Automationをサポートしています。Automationとは文字通り自動化を意味します。では、何を自動化するのでしょう? 例えば「WinSpecのData Acquisition機能を用いてスペクトル(画像)を取得し、ある演算を行って、その結果をセーブする」という動作を行うとします。この一連の作業を人間の手で行うのではなく、あるアプリケーションから同じ動作をさせるとすると、あたかも「自動的に」動作したように見えるはずです。Automationでは、コンポーネント(WinSpec)が自分の機能(Data Acquisition等々)をインターフェースを通して別のコンポーネントに公開しています。従って、コンポーネントは、WinSpecのインターフェースさえ知っていれば(これは簡単に知る事が出来ます)記述するプログラミング言語を選ばないのです。Visual Basicは勿論、より強力なVisual C++、また簡単なスクリプト言語であるVBScriptやInternet Explorer 4.0 or 5.0などを利用する事が出来ます。下図に、それらの概念図を示します。
WinSpec/WinViewは自分の機能をインターフェースを通して公開しています。そしてプログラム(マクロ、AddIn、SnapIn)は、WinSpec/WinViewの機能をあたかも自分の機能であるかのように扱う事が出来ます。マクロとAddInの違いは、マクロがスクリプト言語で記述されているもので、AddInが独立したexe-fileである事です。一方SnapInは、DLL-fileですので、単独では動作せず、WinSpec/WinViewに登録され、メニューの一部として現れ、あたかもWinSpec/WinViewに内蔵された機能であるかのように見えます。
プリンストンインスツルメンツ社では、Visual BasicによるAddIn, SnapInの作成方法を記述した文書を公開しています。本稿の目的もVisual BasicでAddIn, SnapInを作成する手順を解説する事にあります。
なお、Automationの概念に関してはCOM(Component Object Module)プログラミングに関する市販の書籍をお読みください。