共用方式為


SHChangeUpdateImageIDList 結構 (shlobj_core.h)

[SHChangeUpdateImageIDList 可用於需求一節中指定的操作系統。 它可能會在後續版本中改變或無法使用。]

以模擬 ITEMIDLIST 的形式儲存做為 SHUpdateImage 參數的資訊,讓 SHChangeNotify 能夠使用這些資訊。

語法

typedef struct _SHChangeUpdateImageIDList {
  USHORT cb;
  int    iIconIndex;
  int    iCurIndex;
  UINT   uFlags;
  DWORD  dwProcessID;
  WCHAR  szName[MAX_PATH];
  USHORT cbZero;
} SHChangeUpdateImageIDList, *LPSHChangeUpdateImageIDList;

成員

cb

類型: USHORT

結構的大小,以位元組為單位。

iIconIndex

類型: int

szName 所指定檔案中圖示之以零起始的索引。 呼叫 IExtractIcon::GetIconLocation 並擷取 piIndex 所指向的值,以取得此值。

iCurIndex

類型: int

要更新之圖標的系統映像清單中的以零起始的索引。

uFlags

類型: UINT

決定圖示屬性的旗標。 呼叫 IExtractIcon::GetIconLocation 並擷取 pwFlags 所指向的值,以取得此值。 這兩個旗標與 SHUpdateImage相關。

GIL_NOTFILENAME

位置不是檔名/索引組。 呼叫決定從位置擷取圖示的應用程式,必須呼叫這個物件的 IExtractIcon::Extract 方法,以取得所需的圖示影像。

GIL_SIMULATEDOC

呼叫的應用程式應該使用指定的圖示來建立檔圖示。

dwProcessID

szName[MAX_PATH]

類型: WCHAR[MAX_PATH]

以 Null 終止的 Unicode 字串,指定包含圖示之檔案的完整路徑。 呼叫 IExtractIcon::GetIconLocation 並擷取 szIconFile 所指向的值,以取得此值。

cbZero

類型: USHORT

備註

此範例示範 如何使用SHChangeUpdateImageIDListSHChangeDWORDAsIDList by SHChangeNotify 來模擬 SHUpdateImage 函式。

void MyUpdateImage(LPCWSTR pszHashItem, int iIndex, UINT uFlags, int iImageIndex)
{
    SHChangeUpdateImageIDList rgPidl;
    SHChangeDWORDAsIDList rgDWord;
    int cchLen;
    USHORT *pcb;

    // Validate parameters: iImageIndex must be a valid system image list value.
    if (iImageIndex < 0)
    {
        return;
    }

    // Validate parameters: pszHashItem must not exceed MAX_PATH in length
    cchLen = lstrlenW(pszHashItem);
    if (cchLen >= MAX_PATH)
    {
        return;
    }

    // Load SHChangeUpdateImageIDList
    rgPidl.dwProcessID = GetCurrentProcessId();
    rgPidl.iIconIndex = iIndex;
    rgPidl.iCurIndex = iImageIndex;
    rgPidl.uFlags = uFlags;
    lstrcpynW(rgPidl.szName, pszHashItem, MAX_PATH);
    pcb = &rgPidl.szName[cchLen+1];
    
    // Set the size of the first element
    rgPidl.cb = (USHORT)((BYTE*)pcb - (BYTE*)rgPidl); 
    
    // Terminate the "ITEMIDLIST"
    *pcb = 0; 

    // Load SHChangeDWORDAsIDList
    rgDWord.cb = (USHORT)FIELD_OFFSET(SHChangeDWORDAsIDList, cbZero);
    rgDWord.dwItem1 = iImageIndex;
    rgDWord.dwItem2 = 0;
    rgDWord.cbZero = 0;

    // Parameters are now in the form that SHCNE_UPDATEIMAGE can accept
    SHChangeNotify(SHCNE_UPDATEIMAGE, SHCNF_IDLIST, &rgDWord, &rgPidl);
}

規格需求

需求
最低支援的用戶端 Windows XP [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2003 [僅限傳統型應用程式]
標頭 shlobj_core.h (包含 Shlobj.h)

另請參閱

IExtractIcon::GetIconLocation

SHChangeDWORDAsIDList