SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Silverlight 4で作る新しいRIAアプリケーション

Silverlight 4におけるネイティブアプリケーションの統合

Silverlight4で作る新しいRIAアプリケーション(10)

  • X ポスト
  • このエントリーをはてなブックマークに追加

 今回は、Silverlight 4で追加された信頼されたアプリケーションのうち、ネイティブ統合について解説します。信頼されたアプリケーションの他の機能(ローカルファイルアクセス、ポリシーファイルを利用しないネットワークアクセス、対話を必要としないデバイスへのアクセス)については、前回の記事を参照ください。

  • X ポスト
  • このエントリーをはてなブックマークに追加

はじめに

 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オブジェクトを作成している例です。

リスト1 AutomationFactoryを利用したExcelオブジェクトの作成
// オートメーションが利用可能かを確認し、
if (!AutomationFactory.IsAvailable) return;
// Excelのオートメーションオブジェクトを作成する。
dynamic excel = AutomationFactory.CreateObject("Excel.Application")
【コラム】遅延バインドとdynamic

 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)を調べることで確認できます。

図1 レジストリエディター(HKEY_LOCAL_MACHINE\SOFTWARE\Classes)
図1 レジストリエディター(HKEY_LOCAL_MACHINE\SOFTWARE\Classes)

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

図2 OLE/COM Object Viewer
図2 OLE/COM Object Viewer

 CreateObjectメソッドで指定する、代表的なプログラムIDを表1に示します。CreateObjectメソッドで、クライアントにインストールされていないプログラムIDを指定した場合、System.Exceptionの例外が発生します。

表1 代表的なプログラムID
プログラムID 生成されるオートメーションオブジェクト
WbemScripting.SWbemLocator WMI(Windows Management Instrumentation)
WScript.Shell WSH(Windows Scripting Host)
Scripting.FileSystemObject ファイルシステム
Excel.Application Excel
Word.Application Word
ADODB.Connection ADOのデータベースコネクション

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
Excelの起動

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Silverlight 4で作る新しいRIAアプリケーション連載記事一覧

もっと読む

この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、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本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト かるあ (杉山 洋一)(カルア(スギヤマ ヨウイチ))

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/5859 2011/04/28 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング