次の方法で共有


SHAddToRecentDocs 関数 (shlobj_core.h)

最近、最も頻繁に使用された項目を追跡するために、項目にアクセスされたことをシステムに通知します。 この関数を使用して、すべての使用状況データをクリアすることもできます。

構文

void SHAddToRecentDocs(
                 UINT    uFlags,
  [in, optional] LPCVOID pv
);

パラメーター

uFlags

型: UINT

PV パラメーターが指す情報の形式を示す SHARD 列挙からの値。

[in, optional] pv

種類: LPCVOID

アクセスされたアイテムを識別するデータへのポインター。 項目は、次のいずれかの形式でこのパラメーターで指定できます。

すべてのアイテムのすべての使用状況データをクリアするには、このパラメーターを NULL に設定します。

戻り値

なし

解説

このメソッドの呼び出しによって収集された使用状況統計は、最近および最も頻繁にアクセスされたアイテムの一覧を決定するために使用されます。 これらのリストは、[ スタート] メニューと、Windows 7 以降のアプリケーションのジャンプ リストに表示されます。

このメソッドを呼び出すと、次の領域に影響します。

  • 関連付けられているアプリケーションのジャンプ リストの [最近] リストと [頻度] リストを更新します。
  • ユーザーの [最近] フォルダー (FOLDERID_RecentCSIDL_RECENT) にショートカットを追加します。 これは、[スタート] メニューの [最近使ったドキュメント (Windows XP)] メニューと [最近使ったアイテム ] (Windows Vista 以降) メニューに反映されます。
  • [クラシック スタート ] メニューの [ ドキュメント] サブメニューにショートカットを追加します。 ([クラシック スタート] メニュー オプションは、Windows 7 以降では使用できません。
IShellLink で表される項目は、アプリケーションのジャンプ リストに反映されますが、Recent フォルダーには追加されません。

特に、ユーザーが Windows エクスプローラーを使用してアイテムを開いたり、共通のファイル ダイアログを使用してファイルを開いたり、保存したり、作成したりすると、シェルはアプリケーションの代わりに SHAddToRecentDocs を呼び出します。 項目を選択するためのカスタム UI を持つアプリケーションでは、正確な統計を確保するために 、SHAddToRecentDocs を明示的に呼び出す必要があります。 重複する呼び出しはシステムによって考慮されるため、そうすることでデータを歪めるリスクはありません。

実行可能ファイル (.exe) ファイルは、Windows XP 以降のバージョンで最近使用したドキュメントの一覧からフィルター処理されます。 SHAddToRecentDocs は実行可能ファイルのパスを受け入れますが、そのファイルは [最近使用したアイテム] の一覧には表示されません。

フォルダーは SHAddToRecentDocs でも受け入れられますが、Windows エクスプローラー タスク バー ボタンのジャンプ リストにのみ表示されます。 フォルダーは、他のアプリケーションのジャンプ リストには表示されません。

場合によっては、 SHAddToRecentDocs は、処理するために登録されていないファイルの種類を処理するアプリケーションの登録を試みます。 これは、次の状況で発生します。

  • アプリケーションは、処理するために登録されていないファイルの種類で SHAddToRecentDocs を明示的に呼び出します。 これは、アプリケーションの代わりに共通ファイル ダイアログによって SHAddToRecentDocs に対して行われた呼び出しにも適用されますが、ファイルを保存するために使用される場合ではなく、ダイアログを使用してファイルを開く場合にのみ適用されます。
  • ユーザーは、アプリケーションのタスク バー ボタンで処理するためにアプリケーションが登録されていない種類のファイルを削除します。
この登録はユーザーごとに行われます。

登録を正常に完了するには、一連の要件を満たす必要があります。

  • アプリケーションは、 HKEY_CLASSES_ROOT\Applications に登録する必要があります。
  • その登録に NoOpenWith 値を含めることはできません。 NoOpenWith の詳細については、「 ファイルの種類 」を参照してください。
  • この登録では、 SupportedTypes サブキーの下にデータを指定できません。 SupportedTypes サブキーの詳細については、「ファイルの種類」を参照してください。
  • アプリケーションの実行可能ファイルは、ここで見つかった KillList 値に一覧表示できません。
    HKEY_LOCAL_MACHINE
       Software
          Microsoft
             Windows
                CurrentVersion
                   Explorer
                      FileAssociation
                         KillList
    メモ サード パーティ製アプリケーションでは、KillList 値を変更しないでください。 読み取り専用と見なす必要があります。
     
  • アプリケーションの HKEY_CLASSES_ROOT\Applications 登録には、 で定義された既定の動詞のセットが必要です。 HKEY_CLASSES_ROOT\Applications\ \shell サブキーExampleApp.exe

    SHAddToRecentDocs がタスク バー ボタンへのドラッグ アンド ドロップの結果として登録を試みる場合、既存のアプリケーション登録に NoOpenWith 値が含まれていない場合、KillList 値にアプリケーションの実行可能ファイルが一覧表示されていない限り、シェル サブキーがまだ存在しない場合は作成されます。

SHAddToRecentDocs の呼び出しを抑制する

Windows 7 より前のバージョンの Windows では、ファイルの種類で FTA_NoRecentDocs フラグを設定して、そのファイルの種類が Recent フォルダーに追加されないようにすることができます。 このメカニズムは、Windows 7 以降でもサポートされています。 詳細については、「 ファイルの種類 」を参照してください。

SHAddToRecentDocs は、 これらのドキュメントにアクセスするために呼び出される動詞を使用して、ドキュメントの使用状況の統計情報を追跡します。 登録済みの IContextMenu ハンドラーによって提供される動詞は追跡され、これらの項目は [最近 使用したドキュメント (Windows XP)] と [ 最近 使ったアイテム (Windows Vista)] に表示されます。 Windows 7 では、ドキュメントの親フォルダーが [Windows エクスプローラー タスク バーのジャンプ リスト] ボタンに表示されます。 ただし、これらの IContextMenu 動詞を介してアクセスされたドキュメントは、アプリケーション Jump Listsには表示されません。 これらの項目をアプリケーションのジャンプ リストに表示するには、アプリケーションで SHAddToRecentDocs を明示的に呼び出す必要があります。

Windows 7 より前では、動詞のみが openSHAddToRecentDocs の呼び出しを行いました。 Windows 7 以降では、他の動詞でも使用状況統計を生成できます。 この情報は、ジャンプ リストの宛先をより完全かつ正確にするために使用されます。

ただし、ファイルの種類の関連付け登録または個々の IContextMenu 実装の一部のクラスは、この種の追跡には適していません。 使用状況の追跡のポイントは、ユーザーが再びアクセスする可能性が高いアイテムの一覧を生成することです。 たとえば、特定の動詞deleteが、ユーザーが再びアクセスしないアイテムに対して本質的に呼び出される場合、またはファイルのウイルス スキャンなどのセカンダリ アクションである場合、その動詞は追跡に適していません。 ファイルの種類のクラスは、レジストリ エントリ NoRecentDocs を使用して、この追跡から自身を削除する必要があります。 NoRecentDocs はREG_SZ型であり、関連付けられたデータがありません。 その存在は、 SHAddToRecentDocs の呼び出しを防ぐために必要なすべてです。

たとえば、"*"、"AllFileSystemObjects"、"Folder" などのクラスの HKEY_CLASSES_ROOT に登録されているコンテキスト メニュー拡張機能と静的動詞は追跡できません。 このような場合、NoRecentDocs エントリは、次に示すように、クラス キーのルートに追加され、そのクラスに登録されている動詞または拡張機能を介して起動されたドキュメントの追跡を抑制します。

HKEY_CLASSES_ROOT
   AllFileSystemObjects
      NoRecentDocs

NoRecentDocs エントリは、既定 *で 、 AllFileSystemObjectsFolderDirectoryDesktopBackground クラスのサブキーに割り当てられます。

個々の IContextMenu 実装では、次に示すように、NoRecentDocs サブキーをそのコンポーネント オブジェクト モデル (COM) オブジェクトの登録に shellex サブキーに追加することで、追跡をオプトアウトできます。

HKEY_CLASSES_ROOT
   CLSID
      {093C7AAB-5E72-454f-A91D-CA1BC991FCEC}
         shellex
            NoRecentDocs

このサブキーは、 IContextMenu 実装では既定では存在しません。

要件

要件
サポートされている最小のクライアント Windows XP (デスクトップ アプリのみ)
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー shlobj_core.h (Shlobj.h を含む)
Library Shell32.lib
[DLL] Shell32.dll (バージョン 4.0 以降)
API セット ext-ms-win-shell-shell32-l1-2-2 (Windows 10 バージョン 10.0.14393 で導入)

こちらもご覧ください

SHGetFolderLocation

SHGetFolderPath