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
備註
此範例示範 如何使用SHChangeUpdateImageIDList 和 SHChangeDWORDAsIDList 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) |