SHAddToRecentDocs 함수(shlobj_core.h)

가장 최근에 가장 자주 사용되는 항목을 추적하기 위해 항목에 액세스했음을 시스템에 알립니다. 이 함수를 사용하여 모든 사용량 현황 데이터를 지울 수도 있습니다.

구문

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

매개 변수

uFlags

형식: UINT

pv 매개 변수가 가리키는 정보의 형태를 나타내는 SHARD 열거형의 값입니다.

[in, optional] pv

형식: LPCVOID

액세스된 항목을 식별하는 데이터에 대한 포인터입니다. 다음 형식 중 하나로 이 매개 변수에 항목을 지정할 수 있습니다.

모든 항목의 모든 사용 현황 데이터를 지우려면 이 매개 변수를 NULL 로 설정합니다.

반환 값

없음

설명

이 메서드에 대한 호출을 통해 수집된 사용 통계는 가장 최근에 가장 자주 액세스한 항목 목록을 확인하는 데 사용됩니다. 이러한 목록은 시작 메뉴 및 Windows 7 이상에서 애플리케이션의 점프 목록에 표시됩니다.

이 메서드가 호출되면 다음 영역에 영향을 줍니다.

  • 연결된 애플리케이션의 점프 목록에 대한 최근도 목록을 업데이트.
  • 사용자의 최근 폴더(FOLDERID_Recent,CSIDL_RECENT)에 바로 가기를 추가합니다. 이는 시작 메뉴의 내 최근 문서(Windows XP) 및 최근 항목(Windows Vista 이상) 메뉴에 반영됩니다.
  • 클래식 시작 메뉴의 문서 하위 메뉴에 바로 가기를 추가합니다. (클래식 시작 메뉴 옵션은 Windows 7 이상에서는 사용할 수 없습니다.)
IShellLink로 표시되는 항목은 최근 폴더에 추가되지 않지만 애플리케이션의 점프 목록에 반영됩니다.

경우에 따라 특히 사용자가 Windows Explorer 통해 항목을 열거나 공통 파일 대화 상자를 사용하여 파일을 열거나 저장하거나 만들 때 Shell은 애플리케이션을 대신하여 SHAddToRecentDocs를 호출합니다. 항목을 선택하기 위한 사용자 지정 UI가 있는 애플리케이션은 정확한 통계를 보장하기 위해 SHAddToRecentDocs 를 명시적으로 호출해야 합니다. 중복 호출은 시스템에서 고려되므로 이렇게 하면 데이터가 왜곡될 위험이 없습니다.

실행 파일(.exe) 파일은 Windows XP 이상 버전에서 최근에 사용한 문서 목록에서 필터링됩니다. SHAddToRecentDocs는 실행 파일의 경로를 수락하지만 해당 파일은 최근 항목 목록에 표시되지 않습니다.

폴더는 SHAddToRecentDocs에서도 허용되지만 Windows Explorer 작업 표시줄 단추의 점프 목록에만 표시됩니다. 폴더는 다른 애플리케이션의 점프 목록에 표시되지 않습니다.

경우에 따라 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\애플리케이션 등록에는 에 정의된 기본 동사 집합이 있어야 합니다. HKEY_CLASSES_ROOT\Applications\ExampleApp.exe\shell 하위 키입니다.

    SHAddToRecentDocs가 작업 표시줄 단추에 끌어서 놓기 결과로 등록을 시도하는 경우 기존 애플리케이션 등록에 NoOpenWith 값이 없고 애플리케이션의 실행 파일이 KillList 값에 나열되지 않는 한 하위 키가 아직 없는 경우 생성됩니다.

SHAddToRecentDocs에 대한 호출 표시 안 함

Windows 7 이전 버전의 Windows에서는 파일 형식이 FTA_NoRecentDocs 플래그를 설정하여 해당 파일 형식이 최근 폴더에 추가되지 않도록 할 수 있습니다. 이 메커니즘은 Windows 7 이상에서도 지원됩니다. 자세한 내용은 파일 형식 을 참조하세요.

SHAddToRecentDocs는 해당 문서에 액세스하기 위해 호출되는 동사를 통해 문서 사용 통계를 추적합니다. 등록된 IContextMenu 처리기에서 제공하는 동사가 추적되고 해당 항목은 내 최근 문서 (Windows XP) 및 최근 항목 (Windows Vista)에 표시됩니다. Windows 7에서는 문서의 부모 폴더가 Windows Explorer 작업 표시줄의 점프 목록에 표시됩니다. 그러나 해당 IContextMenu 동사를 통해 액세스한 문서는 응용 프로그램 점프 Lists 표시되지 않습니다. 이러한 항목이 애플리케이션의 점프 목록에 표시되도록 하려면 애플리케이션에서 SHAddToRecentDocs를 명시적으로 호출해야 합니다.

Windows 7 이전에는 동사만 openSHAddToRecentDocs를 호출했습니다. Windows 7 이상에서는 다른 동사도 사용 통계를 생성할 수 있습니다. 이 정보는 점프 목록의 대상을 보다 완전하고 정확하게 만드는 데 사용됩니다.

그러나 파일 형식 연결 등록 또는 개별 IContextMenu 구현의 일부 클래스는 이러한 종류의 추적에 적합하지 않습니다. 사용 현황 추적 지점은 사용자가 다시 액세스하려는 항목 목록을 생성하는 것입니다. 특정 동사(deleteinstance 경우)가 사용자가 다시 액세스하지 않을 항목에 대해 기본적으로 호출되거나 파일의 바이러스 검사와 같은 보조 작업인 경우 해당 동사는 추적에 적합하지 않습니다. 파일 형식 클래스는 레지스트리 항목 NoRecentDocs를 통해 이 추적에서 자신을 제거해야 합니다. NoRecentDocs는 REG_SZ 형식이며 연결된 데이터가 없습니다. 해당 존재는 SHAddToRecentDocs에 대한 호출을 방지하는 데 필요한 모든 것입니다.

예를 들어 "*", "AllFileSystemObjects" 또는 "Folder"와 같은 클래스의 HKEY_CLASSES_ROOT 아래에 등록된 상황에 맞는 메뉴 확장 및 정적 동사는 추적하면 안 됩니다. 이와 같은 경우 NoRecentDocs 항목은 여기에 표시된 대로 클래스 키의 루트에 추가되어 해당 클래스에 등록된 동사 또는 확장을 통해 시작된 문서의 추적을 표시하지 않습니다.

HKEY_CLASSES_ROOT
   AllFileSystemObjects
      NoRecentDocs

NoRecentDocs 항목은 기본적으로 *, AllFileSystemObjects, Folder, DirectoryDesktopBackground 클래스 하위 키에 할당됩니다.

개별 IContextMenu 구현은 다음과 같이 셸렉스 하위 키의 COM(Component Object Model) 개체 등록에 NoRecentDocs 하위 키를 추가하여 추적을 옵트아웃할 수 있습니다.

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

이 하위 키는 IContextMenu 구현에 기본적으로 존재하지 않습니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows XP [데스크톱 앱만 해당]
지원되는 최소 서버 Windows 2000 Server[데스크톱 앱만]
대상 플랫폼 Windows
헤더 shlobj_core.h(Shlobj.h 포함)
라이브러리 Shell32.lib
DLL Shell32.dll(버전 4.0 이상)
API 세트 ext-ms-win-shell-shell32-l1-2-2(Windows 10 버전 10.0.14393에 도입됨)

추가 정보

SHGetFolderLocation

SHGetFolderPath