SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

japan.internet.com翻訳記事

API Code PackとVisual Studio 2008でWindows 7のジャンプリストを作成する

Windowsの簡素化されたミニバージョンの[スタート]メニューを実装

  • X ポスト
  • このエントリーをはてなブックマークに追加

Windows API Code Packの使用

 自由にダウンロードできるWindows API Code Packは、さまざまな種類のアセンブリにコンパイルされた.NETクラスのセットです。各自のプロジェクトでこれらを簡単に参照し、クラスを利用できます。

 Code Packを使用するには、まずファイルをダウンロードする必要があります。Code Packのファイルは通常のzip形式なので、Visual Studioプロジェクトフォルダの下など、使いやすい場所に展開します。次に、展開先のフォルダ内に移動し、Visual StudioでShell.slnという名前のソリューションを開きます。ソリューション全体をビルドし、生成されたDLLファイルの場所を覚えておきます。通常はbin\Debugフォルダの下に生成されます。

 ビルドが正常に終了すると、出力フォルダにMicrosoft.WindowsAPICodePack.Shell.dllとMicrosoft.WindowsAPICodePack.dllの2つのアセンブリが作成されます。後者のファイルは自動的に作成されます。ShellプロジェクトはCoreというプロジェクトに依存しているからです。CoreプロジェクトもCode Packの一部です。

 次に、Visual Studioで新しいプロジェクトを開始し(または既にプロジェクトがある場合はそれを開き)、Code Packの2つのDLLをプロジェクトへの参照として追加します(図5)。適切な参照を設定したら、コードの作成を開始できます。アセンブリのファイル名が適切な名前空間を暗に示しています。Code Packをジャンプリストに使用するには、次のusingステートメントをC#コードに追加します。

using Microsoft.WindowsAPICodePack.Shell;
using Microsoft.WindowsAPICodePack.Taskbar;
図5 サンプルプロジェクトを参照先にする
図5 サンプルプロジェクトを参照先にする

 後者の名前空間内に、JumpListという名前のクラスがあります。ジャンプリストの機能を見て回るうえで、このクラスが有効な出発点になります。例えば、ジャンプリストのカスタム動詞をアプリケーションのメニューに追加する方法を見てみましょう。

 最初に、JumpListクラスのインスタンスを生成します。その後で、ジャンプリストに追加するカスタム動詞ごとに、IJumpListTaskインターフェースをサポートするオブジェクトを作成する必要があります。これを行うには、JumpListLinkクラスを利用します。このクラスもMicrosoft.WindowsAPICodePack.Taskbar名前空間に属しています。

 例えば、メモ帳や電卓をすばやく起動するコマンドをアプリケーションのジャンプリストに追加するとします。これを行うには、次のようなコードを使います。

JumpList list = JumpList.CreateJumpList();

string systemFolder = Environment.GetFolderPath(
    Environment.SpecialFolder.System);

string notepadPath = System.IO.Path.Combine(
    systemFolder, "notepad.exe");
JumpListLink notepadTask = new JumpListLink(
    notepadPath, "Open Notepad");
notepadTask.IconReference = new IconReference(
    notepadPath, 0);

string calculatorPath = System.IO.Path.Combine(
    systemFolder, "calc.exe");
JumpListLink calculatorTask = new JumpListLink(
    calculatorPath, "Open Calculator");
calculatorTask.IconReference = new IconReference(
    calculatorPath, 0);

list.AddUserTasks(notepadTask, calculatorTask);
list.Refresh();
MessageBox.Show("Custom tasks have been added!");

 ここでは、新しいジャンプリストオブジェクトを生成し、JumpListLinkクラスを使って2つの動詞を作成しています。コンストラクタにはファイルベースのコマンドが必要で、この例ではWindows\System32ディレクトリにあるNotepad.exe(およびCalc.exe)のフルパス名がそのコマンドになります。この処理にはSystem.IO.Pathクラスを利用しています。また、IconReferenceクラスを使ってメニューアイコンを追加しています。このクラスには、フルパスとアイコンインデックスを指定します。0はファイル内の最初のアイコンを意味し、通常はこれがメインアイコンになっています。

 最後に、JumpListクラスのAddUserTasksメソッドを呼び出して、メニューに新しい動詞を追加しています。コマンドは[タスク]汎用グループの下に作成されるので、ここに追加される動詞はタスクと呼ぶこともできます。作成したタスクの記録はWindowsに保持されます。従って、タスクは一度作成するだけで済みます。

次のページ
独自アプリケーションのコマンドの呼び出し

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
japan.internet.com翻訳記事連載記事一覧

もっと読む

この記事の著者

japan.internet.com(ジャパンインターネットコム)

japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.comEarthWeb.com からの最新記事を日本語に翻訳して掲載するとともに、日本独自のネットビジネス関連記事やレポートを配信。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

Jani Jarvinen(Jani Jarvinen)

フィンランドのソフトウェア開発トレーナー兼コンサルタント。Microsoft C# MVPの受賞者で、投稿も多数。ソフトウェア開発に関する著書も3冊出版している。ITpro.fiというフィンランドのソフトウェア開発エキスパートグループのグループリーダー。ブログのアドレスはhttp://www.saunalahti.fi/janij/

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/4826 2010/02/17 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング