다음을 통해 공유


IExtractIconW::GetIconLocation 메서드(shlobj_core.h)

아이콘의 위치 및 인덱스 를 가져옵니다.

구문

HRESULT GetIconLocation(
        UINT  uFlags,
  [out] PWSTR pszIconFile,
        UINT  cchMax,
  [out] int   *piIndex,
  [out] UINT  *pwFlags
);

매개 변수

uFlags

형식: UINT

다음 값 중 하나 이상. 이 매개 변수는 NULL일 수도 있습니다.

GIL_ASYNC(0x0020)

아이콘을 비동기적으로 추출할지 여부를 확인하려면 이 플래그를 설정합니다. 아이콘을 빠르게 추출할 수 있는 경우 이 플래그는 일반적으로 무시됩니다. 추출에 더 많은 시간이 걸리는 경우 GetIconLocation 은 E_PENDING 반환해야 합니다. 자세한 내용은 설명을 참조하세요.

GIL_DEFAULTICON(0x0040)

대체 아이콘에 대한 정보를 검색합니다. 대체 아이콘은 일반적으로 원하는 아이콘이 추출되어 캐시에 추가되는 동안 사용됩니다.

GIL_FORSHELL(0x0002)

아이콘이 Shell 폴더에 표시됩니다.

GIL_FORSHORTCUT(0x0080)

아이콘은 바로 가기를 나타냅니다. 그러나 아이콘 추출기는 바로 가기 오버레이를 적용하면 안 됩니다. 나중에 수행될 예정입니다. 바로 가기 아이콘은 상태 독립적입니다.

GIL_OPENICON(0x0001)

열려 있는 상태 및 닫힌 상태 이미지를 모두 사용할 수 있는 경우 아이콘이 열려 있는 상태입니다. 이 플래그를 지정하지 않으면 아이콘이 정상 또는 닫힌 상태입니다. 이 플래그는 일반적으로 폴더 개체에 사용됩니다.

GIL_CHECKSHIELD(0x0200)

pwFlags에서 GIL_SHIELD 또는 GIL_FORCENOSHIELD 명시적으로 반환합니다. GIL_ASYNC 설정된 경우 차단하지 마세요.

[out] pszIconFile

형식: PTSTR

아이콘 위치를 수신하는 버퍼에 대한 포인터입니다. 아이콘 위치는 아이콘이 포함된 파일을 식별하는 null로 끝나는 문자열입니다.

cchMax

형식: UINT

pszIconFile이 가리키는 버퍼의 크기(문자)입니다.

[out] piIndex

형식: int*

pszIconFile이 가리키는 파일에서 아이콘의 인덱스를 수신하는 int에 대한 포인터입니다.

[out] pwFlags

형식: UINT*

0 또는 다음 값의 조합을 수신하는 UINT 값에 대한 포인터입니다.

GIL_DONTCACHE(0x0010)

이 아이콘의 실제 이미지 비트는 호출 애플리케이션에 의해 캐시되지 않습니다.

GIL_NOTFILENAME(0x0008)

위치가 파일 이름/인덱스 쌍이 아닙니다. pszIconFilepiIndex의 값은 ExtractIcon 또는 ExtractIconEx에 전달할 수 없습니다.

이 플래그를 생략하면 pszIconFile 에서 반환되는 값은 .ico 파일 또는 아이콘을 포함할 수 있는 파일에 대한 정규화된 경로 이름입니다. 또한 piIndex 에서 반환되는 값은 사용할 아이콘을 식별하는 해당 파일의 인덱스입니다. 따라서 GIL_NOTFILENAME 플래그를 생략하면 이러한 값을 ExtractIcon 또는 ExtractIconEx에 전달할 수 있습니다.

GIL_PERCLASS(0x0004)

이 클래스의 모든 개체에는 동일한 아이콘이 있습니다. 이 플래그는 셸에서 내부적으로 사용됩니다. IExtractIcon의 일반적인 구현에는 이 플래그가 필요하지 않습니다. 플래그는 아이콘 처리기가 개체별로 아이콘을 resolve 필요가 없음을 의미하기 때문입니다. 클래스별 아이콘을 구현하는 데 권장되는 방법은 클래스에 대한 DefaultIcon을 등록하는 것입니다.

GIL_PERINSTANCE(0x0002)

이 클래스의 각 개체에는 고유한 아이콘이 있습니다. 이 플래그는 셸에서 내부적으로 Setup.exe 같은 사례를 처리하는 데 사용됩니다. 여기서 이름이 동일한 개체에는 다른 아이콘이 있을 수 있습니다. IExtractIcon의 일반적인 구현에는 이 플래그가 필요하지 않습니다.

GIL_SIMULATEDOC(0x0001)

호출 애플리케이션은 지정된 아이콘을 사용하여 문서 아이콘을 만들어야 합니다.

GIL_SHIELD(0x0200)

Windows Vista에만 해당합니다. 호출 애플리케이션은 UAC 실드를 사용하여 아이콘을 스탬프해야 합니다.

GIL_FORCENOSHIELD(0x0400)

Windows Vista에만 해당합니다. 호출 애플리케이션은 UAC 실드를 사용하여 아이콘에 스탬프를 찍지 않아야 합니다.

반환 값

형식: HRESULT

함수가 유효한 위치를 반환했는지 S_OK 반환하거나 셸에서 기본 아이콘을 사용해야 하는지 S_FALSE. GIL_ASYNC 플래그가 uFlags로 설정된 경우 메서드는 E_PENDING 반환하여 아이콘 추출에 시간이 많이 소요됨을 나타낼 수 있습니다.

설명

클라이언트는 uFlags에서 GIL_ASYNC 플래그를 설정하고 E_PENDING 반환 값으로 수신하는 경우 일반적으로 아이콘을 추출하는 백그라운드 스레드를 만듭니다. GIL_ASYNC 플래그 없이 해당 스레드에서 GetIconLocation을 호출하여 아이콘 위치를 검색합니다. 그런 다음 IExtractIcon::Extract 를 호출하여 아이콘을 추출합니다. E_PENDING 반환하면 개체가 자유 스레드임을 의미합니다. 즉, 여러 스레드에서 동시에 안전하게 호출할 수 있습니다.

GIL_DEFAULTICON 플래그는 일반적으로 원하는 아이콘이 있는 경우 설정되지만 아이콘 캐시에는 해당 아이콘이 없습니다. 아이콘 추출은 우선 순위가 낮은 백그라운드 프로세스이므로 다른 프로세스에 의해 지연될 수 있습니다. 기본 아이콘은 최종 아이콘을 추출하고 캐시에 추가하고 사용할 수 있게 하는 데 걸리는 시간 동안 최종 아이콘 대신 표시됩니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows XP [데스크톱 앱만 해당]
지원되는 최소 서버 Windows 2000 Server[데스크톱 앱만]
대상 플랫폼 Windows
헤더 shlobj_core.h
DLL Shell32.dll(버전 4.0 이상)