指定したフォルダのファイル一覧と特殊フォルダへのアクセス

2010年8月5日(木)
PROJECT KySS

指定したフォルダ内のファイル一覧を取得する

今回はSilverlight 4でサポートされた、COMオートメーションを使って、指定したフォルダにアクセスし、ファイルの一覧を表示させるサンプルと、特殊フォルダへのアクセス、の2つを紹介します。これらのアプリケーションは信頼されたTrustedモードのブラウザ外実行で動作します。ブラウザ外実行については後述します。

まずは、COMオートメーションを使った、任意のフォルダへのアクセスを可能にするサンプルの紹介です。

実装する機能の動作は次の通りです。

信頼されたTrustedモードのブラウザ外実行で実行した後、「フォルダ名」の横にレイアウトされている、TextBoxに任意のフォルダ名を入力します。このサンプルでは、「C:\Windows」と入力し、[OK]ボタンをクリックします。すると、C:\Windows内のファイル一覧が表示されます(図1)。

図1: C:\Windows内のファイル一覧が表示されている(クリックで拡大)

サンプル・ファイルはこちらからダウンロードできます。

新規プロジェクトの作成と依存関係の設定

早速サンプルを作っていきましょう。

前回までのサンプル作成時と同様の手順で、新規Silverlight 4プロジェクト(プロジェクト名は「SL4_COM_GetFile」)を作成し、プロジェクトの依存関係も設定しておきます。

VS 2010のデザイン画面上で、コントロールをレイアウトする

UserControlのWidthに800、Heightに600を指定してデザイン領域を広くしておきます。今回使うコントロールは、アプリケーションのタイトルを表示するためのTextBlockコントロール、項目名を表示するLabelコントロール、フォルダ名を入力するTextBoxコントロール、[OK]用のButtonコントロール、ファイルの一覧を表示するListBoxコントロールの5つです。

TextBlock(1)、Label(2)、TextBox(3)、Button(4)、ListBox(5)コントロールを、デザイン画面上にドラッグ&ドロップします(図2)。

図2: 今回使う5つのコントロールを、デザイン画面上にドラッグ&ドロップする

コントロールをレイアウトできたら、[プロパティ]内の[共通]、[レイアウト]、[ブラシ]、[テキスト]等を展開して表示される各プロパティを設定して、デザインを整えます。TextBlockコントロールのText、フォントのサイズ、太字、LabelのContent、ButtonのContent、ListBoxのWidthやHeightプロパティを設定しておきましょう(図3)。

図3: 各コントロールのプロパティを設定した

これによって書き出されるXAMLコードは省略します。

信頼されたTrustedモードによるOut-of-browser(ブラウザ外実行)の設定

VS 2010のメニューから「プロジェクト(P)> SL4_COM_GetFile のプロパティ(P)」を選択し、「Silverlight」ペインの「アプリケーションのブラウザ外実行を有効にする(B)」にチェックを付けます。

さらに、「デバッグ」ペインの「開始動作」も設定してみましょう。デフォルトでは「ブラウザ外実行アプリケーション(I)」にチェックが付いています。この状態で実行すると、即座にブラウザ外実行で動作するようになります。

今回は、このデフォルトの設定ではなく、「テスト ページを動的に生成する(Y)」に変更してみましょう(図4)。

図4: 「アプリケーションのブラウザ外実行を有効にする(B)」にチェックを付け、「テスト ページを動的に生成する(Y)」に変更しておく(クリックで拡大)

「Silverlight」ペインに戻り、 [ブラウザ外実行の設定(S)]ボタンをクリックすると、「ブラウザ外実行の設定」画面が表示されます。

この画面では、ブラウザ外実行時の各種設定を変更することができます。

今回のサンプルでは、「ブラウザ外での実行時に昇格された信頼を要求する(E)」の個所にチェックを付け、信頼されたTrustedモードで実行するようにしておきましょう(図5)。

図5: Trustedモードに設定する

四国のSOHO。薬師寺国安(VBプログラマ)と、薬師寺聖(デザイナ、エンジニア)によるコラボレーション・ユニット。1997年6月、Dynamic HTMLとDirectAnimationの普及を目的として結成。共同開発やユニット名義での執筆活動を行う。XMLおよび.NETに関する著書や連載多数。最新刊は「Silverlight実践プログラミング」両名とも、Microsoft MVP for Development Platforms - Client App Dev (Oct 2003-Sep 2012)。http://www.PROJECTKySS.NET/

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています