がりらぼ

WindowsRuntimeの応援ブログ

俺のアプリはUSBを挿すと動く


Windows 8 Store apps Advent Calendar7日目という事で
今年も年末になりましたね。がりっちです。

本年度は勉強会を主催させていただいたり、MSPフェローシップになれたり、東京でいろいろしたり楽しかった一年でした。

景気よく年末を迎えるために、アドベントカレンダーで一発よい記事を書こうとしたのですが...

なんと学校のテストが暴風警報により延期され、まさかのテスト期間中にアドベントカレンダーを書くことになりました。
なのでかなり雑なのをお許し下さい。

今回は"俺のアプリはUSBを挿すと動く"ということでUSBをさした時に自動再生をするアプリをしようかなと

とりあえずまずはマニフェストファイルに
宣言→自動再生コンテンツに以下のようにします。
f:id:garicchi:20121207163729p:image

次にファイルの関連付けを以下のようにします
f:id:garicchi:20121207163727p:image

最後に機能のタブでリムーバル記憶領域にチェックを入れます
f:id:garicchi:20121207163726p:image

そして、App.xaml.csに以下を追加します

protected override void OnFileActivated(FileActivatedEventArgs args)

{

if (args.Verb == "show")

{

Frame rootFrame = (Frame)Window.Current.Content;

var mainPage = (MainPage)rootFrame.Content;

// Call DisplayImages with root folder from camera storage.

mainPage.FileLaunch((Windows.Storage.StorageFolder)args.Files[0]);

}

base.OnFileActivated(args);

}


Main.xaml.csには以下を

public async void FileLaunch(StorageFolder file)

{

MessageDialog dialog = new MessageDialog(file.DisplayName);

await dialog.ShowAsync();

}


これでアプリを実行して、ルートフォルダにDCIMフォルダのあるUSBを指すと....

なんとUSBの名前が表示されます。
ごめんなさい。これだけです。

【今回わかったこと】
リムーバルデバイス自動再生はApp.xaml.csのonFileActivatedをオーバーライドする
その時マニフェストに書いてある動詞で条件分けをする
StorageFolderが取得できる。

USBをさして中の画像一覧列挙とかもできそうで面白そうですね!!

明日はきっと素晴らしい記事を書いていただけると思います
雑でごめんなさい
さてテスト勉強をしないと...