がりらぼ

WindowsRuntimeの応援ブログ

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

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

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

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

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

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

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

次にファイルの関連付けを以下のようにします

最後に機能のタブでリムーバル記憶領域にチェックを入れます

そして、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をさして中の画像一覧列挙とかもできそうで面白そうですね!!

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