SHChangeUpdateImageIDList 構造体 (shlobj_core.h)

[SHChangeUpdateImageIDList は、[要件] セクションで指定されたオペレーティング システムで使用できます。 以降のバージョンでは変更または使用できない場合があります。]

SHChangeNotify で使用できるように、ITEMIDLIST を模倣した形式で SHUpdateImage のパラメーターとして使用される情報を格納します。

構文

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 で指定されたファイル内のアイコンの 0 から始まるインデックス。 この値を取得するには、 IExtractIcon::GetIconLocation を呼び出し、 piIndex が指す値を取得します。

iCurIndex

型: int

更新中のアイコンのシステム イメージ リスト内の 0 から始まるインデックス。

uFlags

型: UINT

アイコン属性を決定するフラグ。 この値を取得するには、 IExtractIcon::GetIconLocation を呼び出し、 pwFlags が指す値を取得します。 これら 2 つのフラグは 、SHUpdateImage に関連します。

GIL_NOTFILENAME

場所はファイル名とインデックスのペアではありません。 場所からアイコンを抽出するアプリケーションを呼び出すには、このオブジェクトの IExtractIcon::Extract メソッドを呼び出して目的のアイコン イメージを取得する必要があります。

GIL_SIMULATEDOC

呼び出し元のアプリケーションでは、指定したアイコンを使用してドキュメント アイコンを作成する必要があります。

dwProcessID

szName[MAX_PATH]

種類: WCHAR[MAX_PATH]

アイコンを含むファイルの完全修飾パスを指定する null で終わる Unicode 文字列。 この値を取得するには、 IExtractIcon::GetIconLocation を呼び出し、 szIconFile が指す値を取得します。

cbZero

種類: USHORT

注釈

この例では、SHChangeNotify による SHChangeUpdateImageIDListSHChangeDWORDAsIDList を使用して 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 (デスクトップ アプリのみ)
Header shlobj_core.h (Shlobj.h を含む)

こちらもご覧ください

IExtractIcon::GetIconLocation

SHChangeDWORDAsIDList