[WinRT] 独自プロトコルを使ってデスクトップアプリからストアアプリへ通知する

デスクトップアプリからストアアプリに通信をするには、あらかじめストアアプリのほうからデスクトップアプリのほうにソケットを張っておく必要があり…と思っていたのですが、試してみるとストアアプリ間の独自プロトコルはデスクトップアプリとストアアプリ間にも使えるのですね。なるほど。

[WinRT] 独自プロトコルを使ってストアアプリ間で通信する – Moonmile Solutions Blog
http://www.moonmile.net/blog/archives/5023

で、作ったストアプリの「mm-message:」というプロコルを使って、デスクトップから通知を出せます。

■普通に Process.Start を使えば OK

実はブラウザを開く時のように普通に Process.Start メソッドが使えます。

private void button1_Click(object sender, EventArgs e)
{
    var text = textBox1.Text ;
    Process.Start("mm-message:" + text);
}

ちなみにストアアプリから通知する場合は、Launcher.LaunchUriAsync を使います。

private void Button_Click(object sender, RoutedEventArgs e)
{
    string text = this.text1.Text;
    var ret = Windows.System.Launcher.LaunchUriAsync(new Uri(
        "mm-message:" + text));
}

Windows 7 以前では独自プロトコルを登録するのは結構な手間だったのですが、Windows 8 の場合は、ストアアプリから登録してやると手軽にできるかも、という例として。このサンプルの場合は、ターゲットのストアアプリを OnActivated でわざとアクティブにしているので、アクティブにしないようにしてトーストだけ出すようにすれば、デスクトップアプリ→ストアアプリ→トースト通知、が手軽にできるかもしれません。デスクトップから直接出す方法は、艦これ諜報員で使っているのですが、意外と手間なのとスタート画面にタイルがデスクとトップアプリのアイコンになってしまいダサいので、ストアアプリとの組み合わせ技でできるならば、それで OK かも。

■サンプルコード

サンプルはこちら
http://sdrv.ms/17KCLxr

カテゴリー: C#, WinRT パーマリンク