none
ジャンプリストがうまく動作しない RRS feed

  • 質問

  • 以下のコードのようにした場合、ジャンプリストにタスクと最近使ったファイルが表示されるのですが、最近使ったファイルは表示されていません

    (既定のプログラムにて任意の拡張子がついたファイルを開くように設定はしてあります)

    ApiCodePack付属のサンプルでも同じ現象が起きるのですが、いったいどうしてこういうことになってしまうのでしょうか?

    回避方法があったら教えてほしいです

    (最近使った項目とプログラムをクリアーしたのですが、だめでした)

    		private TaskbarManager windowsTaskbar = TaskbarManager.Instance
    
        public MainForm(string[] args)
        {
          InitializeComponent();
    
          if (Environment.OSVersion.Version.Major == 6 && Environment.OSVersion.Version.Minor >= 1)
            windowsTaskbar.ApplicationId = Resources.AppName;
        }
    
        private void MainForm_Shown(object sender, EventArgs e)
        {
          if(this.windowsTaskbar != null)
            this.jumpList = JumpList.CreateJumpList();
          if (this.windowsTaskbar == null)
            return;
          jumpList.AddUserTasks(new JumpListLink(Application.ExecutablePath, this.NewToolStripMenuItem.Text) {
            Arguments = "-new",
            IconReference = new Microsoft.WindowsAPICodePack.Shell.IconReference(Application.ExecutablePath,0)
          });
          this.jumpList.AddToRecent(filepath);
          this.jumpList.Refresh();
    		}
    
    
    


    none
    2010年9月12日 4:10

回答

  • Windows API Code Pack 1.1のサンプル「TaskbarDemo」はご覧いただいていますか?
    Windows API Code Pack 1.1\source\Samples\Shell\TaskbarDemo\CS\RegistrationHelper

    「既定のプログラム」で行う関連付けが保存される場所はレジストリのHKEY_CURRENT_USERで、AddToRecent(というか、そこから呼ばれるSHAddToRecentDocs)はHKEY_CLASSES_ROOTの関連付けを見るようです(TaskbarDemo付属のRegistrationHelperを見る限りHKCRに書き込んでいます)。

    つまり、HKCRの関連付けを変更しないと、このAPI使って「最近使ったファイル」の追加ができないようです。

    RegistrationHelperは、ハンズオンラボの資料に出てくるものと同じもののようです。一度ご覧ください。
    「ハンズオン ラボ: Windows 7 タスク バー」
    http://msdn.microsoft.com/ja-jp/windows/ee620535.aspx

    ■修正とお詫び
    Windows 7では、関連付けが全くないファイルを初めてクリックして関連付けをすると、
    .<拡張子名>
    HKEY_CLASSES_ROOT\<拡張子名>_auto_file
    がHKCUからリンクされるため、HKCRに登録されているかのように利用できます。
    #実際に登録されていないことは、他のユーザでログインすれば確認できます。

    ですので、上記回答は、かなり的を外してたといえます。
    お詫びと訂正を申し上げますm(_ _)m

    • 編集済み ChukiMVP 2010年9月20日 5:33
    • 回答の候補に設定 山本春海 2010年9月28日 8:29
    • 回答としてマーク 山本春海 2010年10月1日 7:58
    2010年9月12日 15:17
  • 今一度確認してみましたが、関連付けの設定はきちんとHKCRにかきこまれていました

    念のためにAddToRecentだけでどうさせてみましたが、最近使用したファイルがジャンプリストに追加されることを確認しました

    ご質問は、同時に表示されない、ということでよろしいでしょうか?

    再度ハンズオンラボの中段あたりをご覧ください。

    jumpList.KnownCategoryToDisplay = JumpListKnownCategoryType.Recent;
    を追加しないと、タスクだけが表示され、「最近使ったもの」は非表示になります。

    「ハンズオン ラボ: Windows 7 タスク バー」
    http://msdn.microsoft.com/ja-jp/windows/ee620535.aspx
    タスク 3 – ジャンプ リストにタスクとデスティネーションを追加する 注記抜粋(下線・太文字Chuki追加):
    Note: 上記の Refresh メソッドの呼び出しによって、ジャンプ リストが更新されます。このとき、予め前述の手順 c のように、KnownCategoryToDisplay プロパティには、明示的に「最近使ったもの」を表示するように指定しておかないと、タスクだけが表示され、「最近使ったもの」は非表示になります。

    • 回答の候補に設定 山本春海 2010年9月28日 8:29
    • 回答としてマーク 山本春海 2010年10月1日 7:58
    2010年9月20日 5:04

すべての返信

  • Windows API Code Pack 1.1のサンプル「TaskbarDemo」はご覧いただいていますか?
    Windows API Code Pack 1.1\source\Samples\Shell\TaskbarDemo\CS\RegistrationHelper

    「既定のプログラム」で行う関連付けが保存される場所はレジストリのHKEY_CURRENT_USERで、AddToRecent(というか、そこから呼ばれるSHAddToRecentDocs)はHKEY_CLASSES_ROOTの関連付けを見るようです(TaskbarDemo付属のRegistrationHelperを見る限りHKCRに書き込んでいます)。

    つまり、HKCRの関連付けを変更しないと、このAPI使って「最近使ったファイル」の追加ができないようです。

    RegistrationHelperは、ハンズオンラボの資料に出てくるものと同じもののようです。一度ご覧ください。
    「ハンズオン ラボ: Windows 7 タスク バー」
    http://msdn.microsoft.com/ja-jp/windows/ee620535.aspx

    ■修正とお詫び
    Windows 7では、関連付けが全くないファイルを初めてクリックして関連付けをすると、
    .<拡張子名>
    HKEY_CLASSES_ROOT\<拡張子名>_auto_file
    がHKCUからリンクされるため、HKCRに登録されているかのように利用できます。
    #実際に登録されていないことは、他のユーザでログインすれば確認できます。

    ですので、上記回答は、かなり的を外してたといえます。
    お詫びと訂正を申し上げますm(_ _)m

    • 編集済み ChukiMVP 2010年9月20日 5:33
    • 回答の候補に設定 山本春海 2010年9月28日 8:29
    • 回答としてマーク 山本春海 2010年10月1日 7:58
    2010年9月12日 15:17
  • 今一度確認してみましたが、関連付けの設定はきちんとHKCRにかきこまれていました

    念のためにAddToRecentだけでどうさせてみましたが、最近使用したファイルがジャンプリストに追加されることを確認しました


    none
    2010年9月19日 15:13
  • 今一度確認してみましたが、関連付けの設定はきちんとHKCRにかきこまれていました

    念のためにAddToRecentだけでどうさせてみましたが、最近使用したファイルがジャンプリストに追加されることを確認しました

    ご質問は、同時に表示されない、ということでよろしいでしょうか?

    再度ハンズオンラボの中段あたりをご覧ください。

    jumpList.KnownCategoryToDisplay = JumpListKnownCategoryType.Recent;
    を追加しないと、タスクだけが表示され、「最近使ったもの」は非表示になります。

    「ハンズオン ラボ: Windows 7 タスク バー」
    http://msdn.microsoft.com/ja-jp/windows/ee620535.aspx
    タスク 3 – ジャンプ リストにタスクとデスティネーションを追加する 注記抜粋(下線・太文字Chuki追加):
    Note: 上記の Refresh メソッドの呼び出しによって、ジャンプ リストが更新されます。このとき、予め前述の手順 c のように、KnownCategoryToDisplay プロパティには、明示的に「最近使ったもの」を表示するように指定しておかないと、タスクだけが表示され、「最近使ったもの」は非表示になります。

    • 回答の候補に設定 山本春海 2010年9月28日 8:29
    • 回答としてマーク 山本春海 2010年10月1日 7:58
    2010年9月20日 5:04