WPF のアプリを作っているときに JumpList を使おうと思ったときに、システムトレイアイコンのメニューとの使い方の違いを再認識しました。その内容をメモ。
JumpList
JumpList は Windows 7 から追加された windows の機能です。
JumpList とシステムトレイの右クリックメニューは、根本的に用途が異なります。JumpList は基本的にプログラムの起動を促すうごきをします。
タスクバーにピン留めするという場合もあって、わかりやすい例だとアプリが実行されていない状態から JumpList を実行するケースもありえます。なので、実行中のアプリに対しての命令をメニューに含めようとすると不都合の生じる恐れがあります。
システムトレイのアプリケーションは、基本的にアプリケーションは(バックグラウンドかもしれませんが)実行状態であり、インスタンスがあります。なので、実行中のアプリに対しての命令をメニューに含めることが可能です。
.NET になった現在だと下記のコードで動きました。
var jumpList = new System.Windows.Shell.JumpList(); var jumpTask = new System.Windows.Shell.JumpTask() { Title = "hello task", }; jumpList.JumpItems.Add(jumpTask); jumpList.Apply();
PresentationFramework.dll
で動いているので初期の頃は dll の参照追加が必要だったり構築方法が変化する中で面倒な印象が残っています。現在は、特になにもしなくても JumpList を追加することができました。
簡単な機能なのでファイルを読み込む機能があり、履歴のような機能を追加するなら検討の余地がありそう。
使い方の例
Visual Studio や Visual Studio Code も基本的には、ファイルを開く用途で使用しています。
ブラウザになると、特定のページを開くアクションをします。アプリケーションの起動+ページを開く動作なので上手い応用だと思いました。
一方で Notion のようなアプリケーションだと JumpList に対応していないのか、アプリケーションが不向きなのかはわかりませんが、利用がありません。なので必ずしも対応しなければいけない機能かといえば、そうでもなさそうです。