Silverlight 4におけるネイティブアプリケーションの統合
Silverlight4で作る新しいRIAアプリケーション(10)
今回は、Silverlight 4で追加された信頼されたアプリケーションのうち、ネイティブ統合について解説します。信頼されたアプリケーションの他の機能(ローカルファイルアクセス、ポリシーファイルを利用しないネットワークアクセス、対話を必要としないデバイスへのアクセス)については、前回の記事を参照ください。
はじめに
Silverlight 4の信頼されたアプリケーションは、それまでのRIAにはない多くの機能を提供しています。前回の記事では、ローカルファイルアクセス、ポリシーファイルを必要としないネットワークアクセス、ユーザーと対話を必要としないデバイスへのアクセスについて解説しました。
今回は、引き続き信頼されたアプリケーションのネイティブ統合にスポットを当てて、解説を行っていきます。
ネイティブ統合
Silverlight 4の信頼されたアプリケーションでは、Silverlightが動作するクライアントにあらかじめインストールされたオートメーションオブジェクトを利用して、Excelを起動したり、Visual Basic 6(以下、VB6)で作成したアプリケーションをSilverlightから利用できます。
オートメーション
オートメーションは、作成したアプリケーションをスクリプトや他のアプリケーションから呼び出すための機能です。オートメーションの技術そのものは、Windows以外のOSでも利用できる技術ですが、Silverlightのネイティブ統合ではWindowsのみで利用できます。
オートメーションオブジェクトについては、次のURLで詳しく解説されています。
Sliverlightでオートメーションオブジェクトを作成するためには、System.Runtime.InteropServices.Automation.AutomationFactoryクラスのCreateObjectメソッドを利用します。オートメーションオブジェクトを作成する場合は、現在の動作環境がオートメーションをサポートしているかをIsAvailableプロパティで確認する必要があります。
もしオートメーションがサポートされない環境で、CreateObjectメソッドを使用してオートメーションオブジェクトを作成しようとすると、NotSupportedExceptionの例外が発生します。
リスト1はAutomationFactoryクラスを利用して、Excelオブジェクトを作成している例です。
// オートメーションが利用可能かを確認し、
if (!AutomationFactory.IsAvailable) return;
// Excelのオートメーションオブジェクトを作成する。
dynamic excel = AutomationFactory.CreateObject("Excel.Application")
C#4.0では、dynamicキーワードを利用して、AutomationFactoryクラスのCreateObjectメソッドが返すオブジェクトに対して、動的なプログラミングを行うことができます。
dynamicキーワードを利用するためには、Microsoft.CSharp.dllへの参照が必要です。下記のアドレスから参照設定を行ってください。
- %ProgramFiles(x86)\Microsoft SDKs\Silverlight\v4.0\Libraries\Client\Microsoft.CSharp.dll
プログラムIDは、オートメーションとしてインストールされたプログラムに割り当てられた名前です。レジストリエディター(REGEDIT.exe)からHKEY_LOCAL_MACHINE\SOFTWARE\Classesに追加されているエントリー(図1)を調べることで確認できます。

Visual Studio 2010をインストールしている場合は、OLE/COM Object Viewer(図2)でも確認できます。

CreateObjectメソッドで指定する、代表的なプログラムIDを表1に示します。CreateObjectメソッドで、クライアントにインストールされていないプログラムIDを指定した場合、System.Exceptionの例外が発生します。
| プログラムID | 生成されるオートメーションオブジェクト |
| WbemScripting.SWbemLocator | WMI(Windows Management Instrumentation) |
| WScript.Shell | WSH(Windows Scripting Host) |
| Scripting.FileSystemObject | ファイルシステム |
| Excel.Application | Excel |
| Word.Application | Word |
| ADODB.Connection | ADOのデータベースコネクション |
この記事は参考になりましたか?
- Silverlight 4で作る新しいRIAアプリケーション連載記事一覧
-
- Silverlight 4におけるネイティブアプリケーションの統合
- Silverlight 4における信頼されたアプリケーション
- Silverlightによるデスクトップアプリケーション
- この記事の著者
-
山田 祥寛(ヤマダ ヨシヒロ)
静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
WINGSプロジェクト かるあ (杉山 洋一)(カルア(スギヤマ ヨウイチ))
<WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書、記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
