COMは長く使用されてきたため、現在も数多くのCOMコンポーネントがWindowsでは使用されています。
そのため、.NET FrameworkにはCOMとの連携機能が追加されています。
この機能は「COM相互運用機能」と呼ばれ双方向に対応しており、C#,VB.NETからCOMを呼び出すことも、COMからC#,VB.NETを呼び出すことも可能となっています。

C#からCOMオブジェクトを呼び出す

ここではWindowsに用意されているCOMオブジェクトのうち、シェル(エクスプローラ)の機能を呼び出すことが可能なShellオブジェクトを呼び出してみます。

  1. [ファイル]-[新規作成]-[プロジェクト]を選択し、プロジェクトの種類は「Visual C#」、テンプレートは「コンソールアプリケーション」を選択します。

  2. ソリューションエクスプローラの参照設定にて右クリックし、[参照の追加]を押します。
  3. 参照の追加 の画面にて、COMタブを選択し、「Microsoft Shell Controls And Automation」を選択し[OK]を押します。

  4. 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