IExtractIconA::GetIconLocation 方法 (shlobj_core.h)

取得圖示的位置和索引。

語法

HRESULT GetIconLocation(
        UINT uFlags,
  [out] PSTR 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*

int 的指標,接收 pszIconFile 所指向之檔案中圖標的索引。

[out] pwFlags

類型: UINT*

UINT 值的指標,可接收零或下列值的組合。

GIL_DONTCACHE (0x0010)

呼叫的應用程式不會快取此圖示的實體影像位。

GIL_NOTFILENAME (0x0008)

位置不是檔名/索引組。 pszIconFilepiIndex 中的值無法傳遞至 ExtractIconExtractIconEx

省略此旗標時, pszIconFile 中傳回的值是.ico檔案或可包含圖示的檔案的完整路徑名稱。 此外, piIndex 中傳回的值是該檔案中的索引,可識別要使用的圖示。 因此,當省略GIL_NOTFILENAME旗標時,這些值可以傳遞至 ExtractIconExtractIconEx

GIL_PERCLASS (0x0004)

這個類別的所有物件都有相同的圖示。 Shell 會在內部使用此旗標。 IExtractIcon 的一般實作不需要此旗標,因為旗標表示不需要圖示處理程式,才能根據每個物件解析圖示。 實作每個類別圖示的建議方法是註冊 類別的DefaultIcon。

GIL_PERINSTANCE (0x0002)

這個類別的每個物件都有自己的圖示。 Shell 會在內部使用此旗標來處理 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作為傳回值時,通常會建立背景線程來擷取圖示。 它會從該線程呼叫 GetIconLocation ,而不使用 GIL_ASYNC 旗標,以擷取圖示位置。 然後它會呼叫 IExtractIcon::Extract 來擷取圖示。 傳回E_PENDING表示對像是自由線程的。 換句話說,它可以由多個線程同時呼叫。

在找到所需的圖示的情況下,通常會設定 GIL_DEFAULTICON 旗標,但該圖示不存在於圖示快取中。 圖示擷取是低優先順序的背景進程,因此其他進程可能會延遲。 默認圖示將會在擷取最終圖示、新增至快取及提供時,取代最終圖示。

規格需求

需求
最低支援的用戶端 Windows XP [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限傳統型應用程式]
目標平台 Windows
標頭 shlobj_core.h
Dll Shell32.dll (4.0 版或更新版本)