COMは長く使用されてきたため、現在も数多くのCOMコンポーネントがWindowsでは使用されています。
そのため、.NET FrameworkにはCOMとの連携機能が追加されています。
この機能は「COM相互運用機能」と呼ばれ双方向に対応しており、C#,VB.NETからCOMを呼び出すことも、COMからC#,VB.NETを呼び出すことも可能となっています。
C#からCOMオブジェクトを呼び出す
ここではWindowsに用意されているCOMオブジェクトのうち、シェル(エクスプローラ)の機能を呼び出すことが可能なShellオブジェクトを呼び出してみます。
- [ファイル]-[新規作成]-[プロジェクト]を選択し、プロジェクトの種類は「Visual C#」、テンプレートは「コンソールアプリケーション」を選択します。
- ソリューションエクスプローラの参照設定にて右クリックし、[参照の追加]を押します。
- 参照の追加 の画面にて、COMタブを選択し、「Microsoft Shell Controls And Automation」を選択し[OK]を押します。
- Mainメソッドにて以下のように記述を追加し、指定パスのエクスプローラを開くOpenメソッドを呼び出します。
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Shell32.Shell shell = new Shell32.Shell();
shell.Open("c:\\");
}
}
}
作成したプロジェクトを実行すると、エクスプローラが表示されます。
.NETからCOMオブジェクトにアクセスする際は、直接アクセスは出来ず、仲介するラッパを介してアクセスをします。
このラッパは相互運用機能アセンブリと呼ばれ、.NETとCOMの間を仲介します。
3で参照設定としてShellオブジェクトを追加した際、Interop.Shell32.dllという名前のファイルが、作成したexeファイルと同じフォルダ内に自動生成されています。
このファイルが相互運用機能アセンブリにあたります。
最終更新:2010年02月09日 01:54